¿Qué son los secretos?
Los secretos son credenciales que conceden acceso a datos y sistemas confidenciales. Algunos ejemplos comunes son:
- Claves de API y tokens usados para autenticarse con servicios externos
- Contraseñas de base de datos y cadenas de conexión
- Credenciales del proveedor de nube y tokens de cuenta de servicio
- Certificados y claves de cifrado
Cuando los secretos se confirman en repositorios, se convierten en credenciales codificadas de forma rígida que se insertan directamente en el código fuente o los archivos de configuración. Estos secretos hardcodeados forman parte del historial de Git y permanecen accesibles incluso después de haber sido eliminados del commit más reciente. Esto significa que abordar una fuga de credenciales requiere más que eliminar el archivo; también debe revocar y cambiarla para evitar el acceso no autorizado.
Cómo se exponen los secretos
**La expansión de secretos** se produce cuando las credenciales proliferan entre repositorios, equipos y sistemas sin una administración o visibilidad centralizadas. Esto dificulta el seguimiento de los secretos que existen, dónde se usan y si se han expuesto. Los secretos suelen entrar en los repositorios a través de varios patrones comunes.
Flujos de trabajo de desarrollo
- Credenciales codificadas agregadas durante las pruebas locales y comprometidas accidentalmente
- Secretos en archivos de configuración como archivos
.envo plantillas de infraestructura como código - Credenciales de ejemplo que contienen claves o tokens de API reales en la documentación, wikis o archivos README.
Administración de repositorios
- Repositorios heredados que contienen credenciales olvidadas pero todavía activas
- Secretos compartidos en GitHub incidencias, comentarios de pull requests, discusiones o gists
- Credenciales introducidas por colaboradores externos o contratistas
Propagación del control de versiones
- Los secretos se conservan en el historial de Git incluso después de la eliminación del código actual.
- Las credenciales se propagan a repositorios bifurcados, sistemas de copia de seguridad y registros de CI/CD.
- Los repositorios públicos con secretos expuestos se indexan mediante motores de búsqueda y servicios de análisis especializados.
Riesgos de seguridad
Los secretos expuestos pueden provocar varios tipos de incidentes de seguridad.
Acceso no autorizado
Las pérdidas de credenciales proporcionan a los usuarios no autorizados acceso directo a los sistemas. Una vez expuestos, los secretos codificados de forma codificada se pueden aprovechar para:
- Aprovisionamiento de infraestructura o servicios en su cuenta mediante credenciales de proveedor de nube filtradas
- Acceso a datos confidenciales de clientes u organizaciones a través de credenciales de base de datos en peligro
- Acceder a los sistemas de producción mediante tokens de cuenta de servicio expuestos
Infracciones de datos
Las fugas de credenciales proporcionan a los usuarios no autorizados acceso directo a los sistemas, lo que conduce a infracciones de datos. Una vez que los atacantes obtienen acceso mediante credenciales expuestas, pueden filtrar datos confidenciales, modificar o eliminar información crítica y poner en peligro la confianza del cliente. Las infracciones de datos requieren una respuesta a incidentes inmediata, incluida la revocación de credenciales, la corrección del sistema y la evaluación del ámbito y el impacto de la infracción.
Ataques de cadena de suministro
Los tokens expuestos del registro de paquetes se pueden usar para publicar versiones maliciosas de su software, lo que afecta a los usuarios y organizaciones downstream que dependen de sus paquetes.
Impacto financiero
Los secretos expuestos pueden costar el dinero de su organización de varias maneras.
- Facturas inesperadas en la nube: las claves de API filtradas permiten a los atacantes usar los recursos en la nube. Pueden ejecutar instancias de computación, almacenar datos o extraer criptomonedas en su cuenta, generando facturas elevadas.
- Respuesta a incidentes: la investigación de infracciones, la rotación de credenciales y los sistemas de auditoría tardan mucho tiempo y recursos en la ingeniería.
- Costos legales: las infracciones de datos pueden dar lugar a multas, honorarios legales y gastos de notificación.
- Daño a largo plazo: clientes perdidos, mayores costos de seguros y oportunidades de negocio perdidas después de que los incidentes de seguridad se conviertan en públicos.
Seguridad secreta con GitHub
GitHub proporciona herramientas para ayudarle a evitar, detectar y corregir la pérdida de secretos:
1. Impedir que se confirmen nuevos secretos
Habilite protección Push para examinar el código durante las git push operaciones y bloquear las confirmaciones que contienen secretos detectados antes de entrar en su repositorio. Esto evita que las credenciales codificadas de forma rígida se agreguen al código base y proporcione comentarios en tiempo real a los desarrolladores en el momento de riesgo, que abarcan tanto patrones de proveedor para servicios conocidos como patrones que no son de proveedor, como claves privadas y claves de API genéricas.
Anime a los desarrolladores individuales a habilitar la protección de envío para sus cuentas personales, para proteger todos sus envíos en GitHub, independientemente de las políticas de la organización. Esto ayuda a evitar la expansión de secretos detectando credenciales filtradas antes de llegar a los repositorios.
2. Detección de secretos existentes
Use secret scanning para supervisar continuamente los repositorios de secretos codificados de forma permanente y generar alertas cuando se detecten credenciales, lo que le permite revocar y rotar las credenciales en peligro rápidamente. Más allá de la detección predeterminada de patrones de proveedor, puede expandir el examen a patrones que no son de proveedor y definir patrones personalizados para secretos específicos de la organización. Esto le ayuda a obtener visibilidad de la dispersión de secretos en toda su organización.
Pasos siguientes
Para proteger a su organización frente a la pérdida de secretos:
-
Ejecute una evaluación gratuita de riesgos secretos para comprender la exposición actual. Ejecución de una evaluación de riesgos de seguridad
-
Habilite la protección de inserción para evitar que se confirmen nuevos secretos.
-
Habilite secret scanning para empezar a detectar fugas de secretos existentes.
-
Establezca prácticas seguras de administración de credenciales para los equipos de desarrollo.
Para obtener una visión general sobre las características secretas de seguridad de GitHub, consulte Acerca de la seguridad secreta con GitHub.