Incidente de seguridad en la cadena de suministro de CircleCI: rota tus secretos
7 de enero de 2023
0 minutos de lecturaEl 4 de enero, CircleCI, una herramienta para configurar pipelines de CI/CD automatizados, informó de un incidente de seguridad en su producto mediante un aviso.
Contexto del incidente de CircleCI
El 27 de diciembre, el ingeniero de seguridad Daniel Hückmann recibió una notificación por correo electrónico sobre una posible intrusión en su cuenta de CircleCI gracias a un AWS CanaryToken que él había colocado. Es probable que el atacante activara el señuelo, que tenía la forma de una clave de AWS. Los señuelos, también conocidos como honeytokens, se pueden colocar en los sistemas para investigar y detectar intrusiones; cuando un atacante los activa, te alertan sobre posibles brechas de seguridad.
El 4 de enero de 2022, CircleCI recomendó a sus clientes rotar sus secretos en respuesta a un incidente de seguridad:

Para ser totalmente transparentes, Snyk es tanto socio como cliente de CircleCI.
Recomendaciones de CircleCI para sus usuarios
CircleCI recomendó a todos sus usuarios rotar de inmediato todos los secretos almacenados en su plataforma, ya sea en las variables de entorno de los proyectos o en los contextos. Además, aconsejó revisar los registros internos para detectar cualquier acceso no autorizado entre el 21 de diciembre de 2020 y el 4 de enero de 2023, o después de haber completado la rotación de secretos. CircleCI invalidó los tokens de API personales y de proyecto, y rotó todos los tokens de OAuth de GitHub y Bitbucket.
Si trabajas en desarrollo de software o en entornos de infraestructura, debes saber que rotar secretos puede ser difícil y afectar los flujos de trabajo de CI/CD. Esto es lo que puedes hacer:
Crea un inventario de las variables de entorno que se usan en todos tus proyectos y pipelines, incluidas las almacenadas tanto en el nivel de contexto como en el nivel de proyecto.
No elimines tus secretos de CircleCI; en su lugar, revócalos para impedir que posibles actores maliciosos accedan a ellos.
Asegúrate de rotar las variables de entorno y las claves SSH.
El impacto de la dispersión de secretos en la cadena de suministro de software
Almacenar secretos, como contraseñas y claves de API, en varias ubicaciones se conoce como «dispersión de secretos» y puede dificultar su administración y protección eficaces. Esto puede ocurrir tanto dentro de una organización como en la cadena de suministro de software. Cuando los secretos están dispersos en distintas ubicaciones, es difícil hacerles seguimiento y actualizarlos, lo que aumenta el riesgo de acceso no autorizado. Otro problema es el uso de privilegios persistentes, también conocidos como secretos estáticos, que no se rotan con regularidad.
Aunque las plataformas de administración de secretos pueden almacenarlos y cifrarlos de forma eficaz, los secretos estáticos siguen siendo vulnerables. Pueden filtrarse si se incluyen como texto sin formato en el código fuente de una aplicación, se registran en los logs de la aplicación o se guardan en archivos de configuración. Cuanto más se usa un secreto, mayor es el riesgo de que se vea comprometido. Además, los secretos estáticos pueden otorgar privilegios persistentes en varios sistemas, lo que permite a los hackers mantener el acceso a tu infraestructura.
El uso de credenciales estáticas compartidas y ampliamente utilizadas puede presentar varios problemas. Entre ellos se encuentran la falta de un responsable claro, las credenciales obsoletas que no se eliminaron al retirar servicios, la falta de un proceso de rotación periódico, la ausencia de una fecha de expiración o un límite de tiempo de vida, y el uso innecesario de credenciales estáticas cuando existen mecanismos de control de acceso más seguros, como los tokens dinámicos de corta duración.
En un ataque a la cadena de suministro, un hacker se infiltra en la cadena de suministro de una empresa para acceder a sus sistemas o datos. Esto puede ser especialmente peligroso porque le permite evadir las medidas de seguridad y acceder a información confidencial. A menudo, el atacante intenta comprometer el código fuente o los procesos de compilación, iniciar actividades maliciosas o facilitar nuevas brechas en etapas posteriores de la cadena de suministro.
Es importante que las organizaciones reconozcan los riesgos de la dispersión de secretos y adopten medidas para prevenir ataques a la cadena de suministro. Los productos de software suelen estar compuestos por diversos componentes de distintos proveedores y almacenados en diferentes repositorios. Si los hackers logran acceder a ellos, pueden insertar malware y hacer que el subcomponente quede firmado, de modo que se considere confiable a medida que avanza por la cadena de suministro.
Para abordar estos problemas, las organizaciones pueden usar una solución de administración de secretos con una bóveda cifrada que proteja las credenciales y las claves. La solución también debería ofrecer a los desarrolladores flujos de trabajo simplificados para acceder a los secretos cuando los necesiten, de acuerdo con las políticas aprobadas por el equipo de seguridad. Para proteger aún más las claves y las credenciales, la solución debería permitir rotar secretos fácilmente.
Los secretos dinámicos son credenciales que se generan a pedido y ofrecen acceso temporal a un recurso durante un período limitado, con un conjunto restringido de permisos. No se almacenan, por lo que son menos vulnerables a los ataques. Aunque un secreto dinámico se vea comprometido, deja de ser útil antes de que un ciberdelincuente pueda usarlo. Los secretos dinámicos suelen utilizarse junto con los privilegios permanentes nulos (ZSP), lo que significa que los clientes tienen acceso privilegiado a un recurso solo con los permisos mínimos necesarios para realizar una tarea específica y durante el menor tiempo posible. Este enfoque ayuda a reducir el riesgo de acceso no autorizado y garantiza que los privilegios se otorguen solo cuando se necesitan.
Cómo rotar secretos
Rotar secretos consiste en reemplazar un secreto existente, como una contraseña, una clave de API o una clave SSH, por uno nuevo para reducir el riesgo de que se vea comprometido. Esto se puede hacer de forma manual o automática, según el sistema que se utilice.
Puedes usar varias estrategias para rotar secretos:
Intervalos regulares: Puedes establecer un cronograma para rotar secretos periódicamente. Esto puede ayudar a reducir el riesgo de que un secreto se vea comprometido, ya que el atacante solo tendrá un período limitado para intentar explotarlo.
A pedido: También puedes rotar secretos cuando sospeches que uno pudo haberse visto comprometido o si quieres reducir proactivamente el riesgo de que esto ocurra.
Automatización: Puedes usar herramientas y scripts para automatizar la rotación de secretos. Esto ayuda a garantizar que se roten de forma constante y oportuna.
Al rotar secretos, es importante asegurarse de que el nuevo secreto esté debidamente protegido, implementado y configurado. También es necesario comunicar el cambio a las partes pertinentes, como los administradores de sistemas y los usuarios.
Repensar la estrategia de administración de secretos
Aunque antes creyéramos que nuestros secretos estaban protegidos, los casos anteriores de plataformas comprometidas han llevado a las organizaciones a reevaluar sus estrategias de almacenamiento de secretos y a determinar cuál es el método más seguro. Es importante tener en cuenta que, una vez que se usan y se incluyen en el código, los secretos dejan de serlo. Entonces, ¿cuál es la mejor manera de administrar secretos? ¿No deberían usarse en absoluto, o deberían usarse una sola vez y luego revocarse?
Esta publicación se actualizará si surge nueva información.
A los desarrolladores les encanta. Los equipos de seguridad confían en él.
Las herramientas de Snyk, diseñadas primero para desarrolladores, ofrecen seguridad integrada y automatizada que satisface tus necesidades de gobernanza y cumplimiento.
