“La vulnerabilidad de seguridad de la cadena de suministro ocurre en el software que usa Github Actions” Legit Security

Ha surgido un informe de que se está inyectando código malicioso en el proceso de guardar artefactos a través de la plataforma de compilación GitHub Actions. Los investigadores de seguridad cibernética han identificado un script de descarga de artefactos muy utilizado de miles de repositorios como vulnerable al problema de seguridad.
ⓒ Banco de imágenes Getty

Investigadores de Opche Legit Security, una solución de seguridad de la cadena de suministro, autoinforme“Aprendimos que existe un riesgo significativo de ataques de envenenamiento de artefactos al transferir artefactos entre diferentes flujos de trabajo. El envenenamiento de artefactos es un método por el cual un atacante puede lanzar un ataque a la cadena de suministro reemplazando el contenido de un artefacto benigno con un artefacto malicioso modificado”.

Atacar la canalización de CI/CD de un proyecto vulnerable que descarga y utiliza artefactos generados por otros flujos de trabajo es sencillo. Puede bifurcar el repositorio que contiene el flujo de trabajo, modificar la copia local para crear artefactos defectuosos y luego realizar una solicitud de extracción de regreso al repositorio original, pero no es necesario aceptar la solicitud.

Error lógico en la API de almacenamiento de artefactos

GitHub Actions es una plataforma de CI/CD para automatizar la creación y prueba de código de software. Las acciones de GitHub son muy utilizadas por proyectos que alojan y administran repositorios de código fuente en GitHub. Un flujo de trabajo de acción de GitHub es un proceso automatizado definido en un archivo .yml que utiliza la sintaxis YAML que se ejecuta cuando se produce un desencadenante o un evento específico, como cuando se envía código nuevo a un repositorio.

Los artefactos de compilación son archivos binarios, registros y otros archivos compilados que resultan de la ejecución de flujos de trabajo y tareas individuales. Estos artefactos se almacenan dentro de cubos de almacenamiento. A cada flujo de trabajo que se ejecuta en este punto se le asigna un depósito específico en el que se pueden cargar y descargar archivos posteriormente.

La “acción” de referencia (secuencia de comandos) para la descarga de artefactos proporcionada en GitHub no admite la descarga de artefactos entre flujos de trabajo. Sin embargo, la reutilización de artefactos generados por otros flujos de trabajo como entrada para pasos de compilación posteriores es un caso de uso común en proyectos de software. Por este motivo, los desarrolladores han creado sus propios scripts personalizados que se basan en la API de acciones de GitHub para descargar artefactos con un filtrado más complejo, como artefactos creados por un archivo de flujo de trabajo específico, un usuario específico, una rama específica, etc.

Los problemas encontrados por Legit Security son los siguientes: La API no distingue entre los artefactos cargados desde un repositorio bifurcado y los artefactos cargados desde el repositorio principal. Por lo tanto, si el script de descarga filtra los artefactos generados por un archivo de flujo de trabajo específico en un repositorio específico, la API entregará la última versión generada por ese archivo, pero automáticamente a través de la acción de una solicitud de extracción en la versión bifurcada del repositorio. Puede ser una versión maliciosa creada.

“En pocas palabras, en un flujo de trabajo vulnerable, cualquier usuario de GitHub podría crear una bifurcación que construya un artefacto y luego inyecte ese artefacto en el proceso de construcción del repositorio original, modificando su salida. Esta es otra forma de ataque a la cadena de suministro de software en la que un atacante modifica la salida de la compilación”.

Los investigadores encontraron que los cuatro comportamientos personalizados desarrollados por la comunidad para descargar artefactos eran vulnerables. Uno de ellos quedó registrado como dependencia en más de 12.000 repositorios.

También se han infiltrado repositorios de código abierto del lenguaje Rust.

Entre los repositorios que usaban dichos scripts personalizados para el flujo de trabajo estaba el repositorio de programación oficial de Rust. Un flujo de trabajo vulnerable llamado ci.yml fue responsable de construir y probar el código del repositorio y usó una acción personalizada para descargar un artefacto llamado libgccjit.so (archivo de biblioteca de Linux) creado por el flujo de trabajo en el repositorio de terceros. hizo.

Todo lo que los atacantes tenían que hacer era bifurcar el repositorio de terceros, modificar el flujo de trabajo de ese repositorio para crear una versión maliciosa de la biblioteca y emitir una solicitud de extracción al repositorio original para crear el artefacto. Si el flujo de trabajo de Rust se hubiera incluido en la versión envenenada de la biblioteca, un atacante podría haber ejecutado un código malicioso dentro del repositorio de Rust con los privilegios del flujo de trabajo. “Inmediatamente después de la explotación, un atacante podría modificar las entidades disponibles para las ramas del repositorio, las solicitudes de extracción, los problemas, los lanzamientos y otros permisos de tokens de flujo de trabajo”, escribieron los investigadores.

GitHub agregó más capacidades de filtrado a la API después del informe de Legit Security. Los desarrolladores pueden aprovechar esta característica para identificar mejor los artefactos creados por una instancia de ejecución de flujo de trabajo en particular (ID de ejecución de flujo de trabajo). Sin embargo, forzar estos cambios en las implementaciones existentes romperá inevitablemente los flujos de trabajo. Por lo tanto, depende de los usuarios actualizar sus flujos de trabajo con un filtrado más estricto para estar protegidos.

Otra mitigación es filtrar los artefactos descargados por el valor hash de la confirmación que los creó. O bien, excluya por completo los artefactos generados por las solicitudes de incorporación de cambios mediante la opción exclude_pull_requests. Legit Security también se puso en contacto con los autores de los scripts de descarga de artefactos personalizados vulnerables encontrados.

“El enfoque principal de la seguridad de la cadena de suministro es evitar que las personas contribuyan con código malicioso”, dijo a CSO el CTO de Legit Security, Liab Kaspi. Por lo tanto, cada vez que confirma un cambio en un repositorio y crea una solicitud de extracción o ejecuta una solicitud de cambio, GitHub tiene muchos controles de validación integrados. Los colaboradores existen porque alguien tiene que aprobar y fusionar su código. Lo que hemos estado tratando de encontrar es una forma de explotar los problemas lógicos que cualquiera puede afectar sin revisión, y creo que esta es una de esas formas. Si alguien hubiera sabido de esto, podría haber inyectado el artefacto sin ninguna autorización”.

Caspian continuó: Por lo general, una canalización de CI tendrá un flujo de trabajo que se ejecuta automáticamente en una solicitud de extracción para probar el código antes de revisarlo directamente, y si la solicitud de extracción contiene un artefacto que debe construirse, el flujo de trabajo se ejecutará en ese artefacto. descrito como construir un Un atacante sofisticado podría crear una solicitud de extracción capaz de construir un artefacto y luego cerrar el envío para descartar la solicitud, lo que probablemente pasará desapercibido dado todo el ruido de actividad presente en los repositorios de código fuente hoy en día, agregó. .
[email protected]


Source: ITWorld Korea by www.itworld.co.kr.

*The article has been translated based on the content of ITWorld Korea by www.itworld.co.kr. If there is any problem regarding the content, copyright, please leave a report below the article. We will try to process as quickly as possible to protect the rights of the author. Thank you very much!

*We just want readers to access information more quickly and easily with other multilingual content, instead of information only available in a certain language.

*We always respect the copyright of the content of the author and always include the original link of the source article.If the author disagrees, just leave the report below the article, the article will be edited or deleted at the request of the author. Thanks very much! Best regards!