¿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:
- 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.