De la vulnerabilidad a la victoria: defendiendo su canal de CI/CD

Todos los Artículos

Se utilizan canales automatizados de CI/CD (integración continua/entrega continua) para acelerar el desarrollo. Es fantástico tener activadores o programación que tomen su código, lo fusionen, lo construyan, lo prueben y lo envíen automáticamente. Sin embargo, haber sido construidos para brindar velocidad y facilidad de uso significa que la mayoría de las tuberías no están inherentemente construidas teniendo en cuenta la seguridad. Dado que las canalizaciones generalmente necesitan tener acceso a Internet para descargar dependencias y a sus diversos secretos para cargarlos en su entorno de producción, significa que una vez que dicha canalización se ve comprometida, el atacante tiene una amplia gama de opciones para interrumpir su operación o Exfiltrar información o secretos.

Todas las historias presentadas en este artículo describen violaciones en destacadas herramientas de CI/CD. El hecho de que la mayoría de las empresas dependan de estas herramientas significa que, como muchas otras ataques a la cadena de suministro de software, todo lo que los malos actores necesitan es traspasar un solo objetivo para obtener un amplio radio de explosión.
Echemos un vistazo a algunas historias destacadas de los últimos años que demuestran las vulnerabilidades inherentes a este vector de ataque. Al final del artículo, me aseguraré de ofrecer mis recomendaciones para fortalecer y proteger sus tuberías, sin importar qué herramientas esté utilizando.

La violación de CircleCI

En enero de 2023, CircleCI, una plataforma de entrega e integración continua, reveló un violación de la seguridad que permitió a un atacante obtener acceso no autorizado a la infraestructura de la empresa. El ataque se inició mediante un correo electrónico de phishing que engañó a un empleado para que compartiera sus credenciales, que luego el atacante utilizó para acceder a los sistemas de la empresa. El empleado estaba utilizando 2FA, pero el atacante pudo obtener una cookie de sesión una vez que el empleado ya había iniciado sesión en el sistema, lo que le permitió hacerse pasar por el empleado y, finalmente, escalar el acceso a un subconjunto de los sistemas de producción de CircleCI.

El atacante accedió a algunos datos de los clientes, incluidos nombres, direcciones de correo electrónico e información de facturación. La empresa informó que no se accedió a ningún código ni propiedad intelectual, y ningún cliente informó ningún acceso no autorizado a sus cuentas o datos.

CircleCI respondió rápidamente a la infracción, realizando una investigación y trabajando con expertos en seguridad cibernética y aplicación de la ley para identificar el alcance del ataque y remediar las vulnerabilidades que permitieron que ocurriera. La empresa también restableció todas las credenciales de empleados y clientes e implementó medidas de seguridad adicionales, como una mayor supervisión de sus sistemas.

DevOps interrumpido: la violación de seguridad de Argo CD

Argo CD es una popular herramienta de código abierto para la implementación continua de aplicaciones en clústeres de Kubernetes. En febrero de 2022, un Se descubrió una nueva vulnerabilidad en Argo CD que permitía a usuarios no autenticados acceder a información confidencial sobre las aplicaciones de Kubernetes administradas por la herramienta. La vulnerabilidad fue causada por una mala configuración en el servidor API de Argo CD que permitió a usuarios no autorizados ejecutar solicitudes a la API y recuperar información como secretos, configuraciones y metadatos de aplicaciones. Siempre que el atacante tuviera permiso para crear o actualizar aplicaciones y supiera o pudiera adivinar la ruta completa a un archivo que contenga un YAML válido, podría crear un gráfico Helm malicioso y seguir consumiendo archivos YAML como valores hasta que encontrara un dato jugoso que normalmente sería inaccesible.

A la vulnerabilidad se le asignó una puntuación CVSS de 7.5 (alta gravedad) y afectó a todas las versiones de Argo CD hasta la versión 2.1.4 inclusive. Argo CD lanzó un parche para la vulnerabilidad en la versión 2.1.5 y se recomendó a los usuarios que actualizaran a esta versión lo antes posible.

La vulnerabilidad se consideró particularmente preocupante porque Argo CD se utiliza a menudo para gestionar aplicaciones e infraestructura críticas en entornos de producción. La filtración de información confidencial podría haber permitido a un atacante obtener acceso a datos confidenciales o realizar otras acciones maliciosas que podrían afectar la disponibilidad o seguridad de las aplicaciones.

Descubriendo la infracción de Codecove: lecciones aprendidas

Codecov es una herramienta de análisis y seguimiento de cobertura de código que se utiliza dentro de los canales de CI/CD y que permite a los desarrolladores medir y analizar la efectividad de sus pruebas. Según lo publicado en Codecov actualización de seguridad

“El jueves 1 de abril de 2021, nos enteramos de que alguien había obtenido acceso no autorizado a nuestra Cargador de bash script y lo modifiqué sin nuestro permiso. El actor obtuvo acceso debido a un error en el proceso de creación de imágenes Docker de Codecov que le permitió extraer la credencial requerida para modificar nuestro script Bash Uploader”.

Los clientes utilizan Bash Uploader para cargar sus informes de cobertura de código en la plataforma Codecove. Con este acceso, el atacante modificó el script Bash Uploader agregando código malicioso que recopilaba variables de entorno, tokens de autenticación y otros datos confidenciales del sistema del usuario durante el proceso de carga. Luego, estos datos se enviaron a un servidor remoto controlado por el atacante.

Según Codecove, la infracción afectó a aproximadamente el 1% de su base de clientes, que incluía importantes empresas de las industrias de tecnología, finanzas y atención médica. La compañía confirmó que no se modificó ningún código de cliente ni informes de cobertura de código durante la infracción, pero que los tokens de autenticación de usuario y otra información confidencial pueden haberse visto comprometidos.

Codecove tomó medidas inmediatas para eliminar el código malicioso y alertar a los clientes afectados para que restablecieran sus tokens de autenticación y tomaran otras medidas de seguridad. La compañía también inició una investigación sobre el incidente y colaboró ​​con expertos en seguridad cibernética y aplicación de la ley para identificar el origen del ataque.

¿Cómo puedes defender tu oleoducto?

Una imagen que ilustra una tubería.

Conjuntos de torres de enfriamiento en el edificio del centro de datos.

Como se mencionó anteriormente, los canales de CI/CD están diseñados para brindar velocidad y automatización, no necesariamente por motivos de seguridad. El hecho de que tres empresas grandes y respetadas hayan sido víctimas de algún tipo de ataque, exponiendo potencialmente la información de sus clientes, demuestra la vulnerabilidad de su propia canalización y datos.
No importa qué herramientas o plataforma CI/CD esté empleando, puede hacer algunas cosas para mejorar su seguridad y reducir el posible daño en caso de que un actor malintencionado logre obtener acceso a su canalización o red.

  • Modelado de amenazas – El modelado de amenazas es un enfoque estructurado para identificar posibles amenazas a la seguridad de un sistema o aplicación y diseñar contramedidas adecuadas para mitigar esas amenazas. Como ejercicio, imagine que alguien obtuvo acceso a su canalización. ¿A qué entornos pueden acceder ahora? ¿Qué secretos y claves pueden ver y utilizar? ¿Pueden modificar tu código? ¿Pruebas de influencia? ¿Extraer archivos de la web o ejecutar un shell inverso? Incluso si cree que ha desinfectado su canalización y ha segmentado adecuadamente el acceso a la red, no está de más imaginar y luego verificar para estar al tanto del peor de los casos. Es posible que se sorprenda de los secretos y opciones de acceso que se esconden a plena vista dentro de la plataforma o las herramientas de su canalización.
  • Segmentación de red – La segmentación de red es la práctica de dividir una red más grande en subredes o segmentos más pequeños y más seguros, cada uno con sus propios controles y políticas de seguridad. El propósito de la segmentación de la red es aumentar la seguridad de la red en general limitando el alcance de una posible violación de seguridad y minimizando el impacto potencial de un ataque. Dividir una red en segmentos más pequeños limita el movimiento lateral de los atacantes y reduce el riesgo de acceso no autorizado o fuga de datos.
    Con la creciente popularidad de los ataques de phishing, cualquiera de sus desarrolladores u otros empleados puede ser víctima de una estafa de este tipo: todos somos humanos. Asumir que las credenciales de sus desarrolladores podrían ser utilizadas por actores maliciosos significa que debe asegurarse de que la inmensa mayoría de los desarrolladores no tengan el tipo de acceso que les permitiría exfiltrar secretos por sí solos, implantar código malicioso en una imagen de producción, o simplemente impulsar su propia versión de un código de producción sin oposición. Asegurarse de que cada individuo tenga la menor cantidad de acceso necesario para su trabajo requiere mucho tiempo, y la tentación de simplemente darles a todos acceso de administrador y terminar con eso es fuerte. No se deje tentar por el lado oscuro: siga las reglas de confianza cero y privilegios mínimos.
  • Monitoreo y alertas – Siguiendo con el último punto, incluso si ha instruido exhaustivamente a sus desarrolladores para que se cansen del phishing y otras estafas de ingeniería social, aún podría ocurrir una infracción. No sabes cuándo ni cómo, pero al menos debes estar preparado para descubrirlo. Dado que la mayoría de los entornos de tuberías son efímeros, eso significa que una vez realizado el trabajo, no se pueden encontrar rastros de evidencia de lo que sucedió a menos que usted mismo cree esos rastros.
    Asegúrese de registrar todo lo que sucede en sus canalizaciones, en cada PR, fusión, compilación y prueba realizada. Asegúrese de que la información de los usuarios también esté registrada para ser revisada en caso de que un problema requiera dicha verificación. También se debe registrar cualquier cambio en los archivos de configuración o en el entorno mismo. El objetivo aquí es poder hacer una autopsia clara de una infracción para poder saber qué sucedió y cómo. Determine de antemano qué eventos deberían justificar una alerta y asegúrese de que las personas adecuadas reciban esa alerta. Tenga cuidado de no inundar a la gente con alertas inútiles o falsas, ya que eso causaría una fatiga de alerta que simplemente los llevaría a ignorar las alertas o responder mucho más tarde de lo aconsejable. Obviamente, ninguno de estos registros debe contener secretos o claves abiertas, lo que lleva al siguiente punto:
  • Gestión de secretos – Asegúrate de estar utilizando algún tipo de herramienta de gestión de secretos. Como mínimo, facilitaría la rotación de sus secretos y contraseñas en caso de que se produzca una infracción. También debería hacer el trabajo de redactar los secretos abiertos y las claves de acceso que se encuentran en el proceso de cualquier registro realizado en el sistema. En ningún momento alguien no autorizado debería tener acceso a dicha información y definitivamente no debería poder cambiarla.
    La gestión de secretos es cada vez más importante a medida que las organizaciones dependen cada vez más de servicios basados ​​en la nube, aplicaciones en contenedores y otros entornos distribuidos que requieren compartir y gestionar de forma segura secretos entre diferentes sistemas y aplicaciones.
  • Utilice el principio RBAC combinado con privilegios mínimos – El principio del control de acceso basado en roles (RBAC) es proporcionar acceso a los recursos del sistema según el rol o función laboral asignado a un usuario dentro de una organización. En RBAC, a los usuarios se les asignan roles que definen los permisos y derechos de acceso que tienen a varios recursos del sistema, como archivos, carpetas o aplicaciones. El principio de Mínimo Privilegio, por otro lado, es la práctica de otorgar a los usuarios el nivel mínimo de acceso y privilegios necesarios para realizar sus funciones laborales. Esto significa que los usuarios sólo tienen acceso a los recursos que necesitan para realizar sus tareas específicas, y nada más. RBAC y Least Privilege se utilizan a menudo juntos como principios de seguridad complementarios. En RBAC, a los usuarios se les asignan roles que tienen el nivel adecuado de acceso a los recursos que necesitan para realizar sus funciones laborales, y el principio de Mínimo Privilegio garantiza que los usuarios solo tengan acceso al nivel mínimo de recursos necesarios para realizar sus tareas específicas. Juntos, estos principios ayudan a mantener un sistema seguro y bien administrado con un riesgo mínimo de acceso no autorizado o violaciones de datos. Como medida adicional de seguridad, puede configurarlo para que las acciones críticas en el sistema requieran múltiples autorizaciones de usuario. Este enfoque debe tomarse con cuidado ya que tiene el potencial de ralentizar significativamente el trabajo de desarrollo. Sin embargo, para actualizaciones críticas, como eliminar una rama principal o modificar una lista de dependencias, debe hacerlo de modo que al menos dos personas con el acceso adecuado deban aprobarlo.

Mirando hacia el futuro

Nadie va a dejar de usar CI/CD y otras herramientas de automatización para acelerar su trabajo. Vivimos en un mundo en el que nos esforzamos constantemente por lograr actualizaciones de código cada vez más rápidas. Solo debemos asegurarnos de hacerlo teniendo en cuenta la seguridad y de no comprometer nuestro código ni nuestro entorno de producción en el camino.

Una de las cosas más importantes que puede hacer es pensar un poco en lo que podría suceder si personas no autorizadas obtienen acceso. Una vez que sea consciente del peligro y de los diferentes lugares de sus tuberías y red que son vulnerables, confío en que podrá tomar las medidas adecuadas para tapar las posibles fugas.

Scribe es una empresa de seguridad de la cadena de suministro de software cuya plataforma está diseñada para ofrecerle transparencia sobre lo que ocurre en su proceso y canal de desarrollo. Para obtener más información sobre cómo Scribe puede ayudarle a proteger sus tuberías contáctenos.

Este contenido es presentado por Scribe Security, un proveedor líder de soluciones de seguridad de la cadena de suministro de software de extremo a extremo, que ofrece seguridad de última generación para artefactos de código y procesos de desarrollo y entrega de código en todas las cadenas de suministro de software. Más información.