El mes pasado me encontré este artículo de Lectura oscura. Parecía muy familiar. No me llevó mucho tiempo darme cuenta de que la vulnerabilidad de envenenamiento de artefactos de flujo de trabajo cruzado de GitHub que se analiza en el artículo tenía un parecido sorprendente con el flujo de trabajo cruzado de GitHub. envenenamiento de caché Vulnerabilidad que informamos en marzo de 2022.
Flujos de trabajo de GitHub: un componente clave de las canalizaciones de CI/CD de GitHub
Los flujos de trabajo de GitHub se utilizan para definir las acciones específicas que se deben tomar como parte del proceso de CI/CD. Son procesos automatizados que pueden desencadenarse por eventos específicos en un repositorio de GitHub. Estos eventos, por ejemplo, se producen cuando se envía código al repositorio, cuando se abre o cierra una solicitud de extracción o cuando se publica una nueva versión.
Los flujos de trabajo se crean utilizando un archivo YAML, que especifica las acciones que se deben realizar cuando se activa el flujo de trabajo. Dichas acciones pueden ser escritas por el desarrollador o tomadas completamente del mercado de GitHub, donde se pueden descargar y utilizar más de 10,000 acciones predefinidas.
Los flujos de trabajo se componen de uno o más trabajos, que se definen como una serie de pasos. Los pasos pueden ser una variedad de acciones, como ejecutar pruebas, implementar código o publicar un paquete.
Los flujos de trabajo de GitHub son una herramienta poderosa que puede ayudar a los desarrolladores a automatizar y optimizar sus flujos de trabajo, ahorrando tiempo y esfuerzo y mejorando la confiabilidad de su proceso de desarrollo de software, pero no están exentos de fallas incorporadas.
Existen varios problemas de seguridad potenciales que pueden surgir al utilizar flujos de trabajo de GitHub. Éstos son algunos de los más comunes:
- Acceso no autorizado: Usuarios no autorizados podrían acceder y activar flujos de trabajo que no estén configurados o protegidos correctamente. Esto podría permitirles ejecutar código arbitrario o realizar otras acciones no autorizadas.
- Fuga de secretos: los flujos de trabajo a menudo requieren el uso de secretos, como claves API o contraseñas, para acceder a recursos externos o realizar determinadas acciones. Si estos secretos no se protegen adecuadamente, podrían filtrarse, lo que provocaría violaciones de seguridad.
- Dependencia inseguras: Los flujos de trabajo que dependen de bibliotecas o dependencias externas podrían ser potencialmente vulnerables a ataques si esas dependencias no son seguras. Es importante revisar y actualizar periódicamente las dependencias para garantizar que sean seguras.
- Falta de validación y desinfección de entradas.: Los flujos de trabajo que no validan adecuadamente la entrada podrían explotarse para ejecutar código arbitrario o realizar otras acciones no autorizadas.
Echemos un vistazo más de cerca a las dos vulnerabilidades entre flujos de trabajo analizadas en los artículos mencionados anteriormente.
Envenenamiento por artefactos entre flujos de trabajo
Los artefactos del flujo de trabajo de GitHub son productos del trabajo realizado en las canalizaciones de CI/CD. Por lo general, cada flujo de trabajo tendría su propio depósito para almacenar dichos artefactos, pero a veces los flujos de trabajo necesitan acceder a artefactos creados por otros flujos de trabajo. GitHub no permite que los flujos de trabajo accedan directamente al almacenamiento/artefactos de diferentes flujos de trabajo. Para evitarlo, existe una API aprobada por GitHub que permite descargar artefactos basados en un filtrado básico. El problema es que la API no diferencia entre artefactos cargados por repositorios bifurcados y aquellos cargados por los repositorios base. Eso significa que cargar artefactos potencialmente envenenados creados por repositorios bifurcados es un peligro real y presente.
Para solucionar este problema, GitHub comenzó a proporcionar información adicional, así como metadatos de artefactos al descargar artefactos. Esta información está diseñada para ayudar al autor a asegurarse de que está descargando el artefacto correcto. GitHub no considera que el problema básico de los artefactos entre flujos de trabajo sea un problema en este momento. Para obtener más información sobre este problema, consulte el artículo mencionado anteriormente.
Envenenamiento de caché entre flujos de trabajo
GitHub permite el almacenamiento en caché de artefactos y paquetes para acelerar el proceso de CI/CD. En lugar de descargar los artefactos y paquetes necesarios una y otra vez para cada flujo de trabajo en el que puedan ser necesarios, se pueden almacenar en caché y utilizar en diferentes flujos de trabajo.
Dado que el caché se comparte entre flujos de trabajo, todo lo que se necesita es una única infracción en un flujo de trabajo usando el caché con el permiso para cambiarlo, y ese caché puede ser envenenado para todos los usos del flujo de trabajo siguientes. Dado que la caché solo se actualiza cuando hay un nuevo artefacto o paquete para descargar, eso significa que una única caché envenenada puede estar activa durante mucho tiempo, lo que influye en innumerables iteraciones de compilaciones de software que se ejecutan en esa canalización.
GitHub no considera que la cuestión de un caché potencialmente envenenado sea un problema. El caché es una característica útil y su capacidad para compartirse entre flujos de trabajo no se considera un error o un problema de seguridad absoluto en este momento. Para obtener más información sobre este problema, consulte el artículo mencionado anteriormente.
Otras vulnerabilidades de GitHub menos conocidas y cómo defenderse de ellas
GitHub es uno de los sistemas de gestión de control de código fuente (SCM) más populares del mundo. Como tal, también se usa ampliamente para crear y distribuir software utilizando su proceso, acciones y flujos de trabajo de CI/CD.
La gente debe recordar que GitHub se creó para facilitar el intercambio de código y el desarrollo conjunto. Fue diseñado originalmente para desarrolladores de código abierto y las capacidades de cuentas empresariales y organizativas se agregaron más tarde. En esencia, la seguridad no era una preocupación importante del sistema. El hecho de que necesites hacer un configuración especial en GitHub para habilitar funciones de seguridad en tu cuenta significa que la idea de que al usar Git estás inherentemente más seguro es sólo una ilusión.
A finales de este mes, Scribe será el anfitrión Tzachi Zornstain, jefe de cadena de suministro de software de Checkmarx en un seminario web para hablar sobre algunos de estos posibles problemas de la cadena de suministro de software en GitHub.
Si desea obtener más información sobre esta clase de vulnerabilidades menos conocida y cómo defenderse de ellas, escuche esto a pedido. seminario web
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.