Vulnerabilidad en el controlador de GitHub Actions, permitiendo comprometer paquetes en Nixpkgs.

Se han revelado detalles sobre las vulnerabilidades en los manejadores de GitHub Actions, que se activan automáticamente al enviar pull requests al repositorio de paquetes Nixpkgs, utilizado en la distribución NixOS y en el ecosistema relacionado con el gestor de paquetes Nix. La vulnerabilidad permitía a un tercero extraer un token que otorgaba acceso de lectura y escritura al código fuente de todos los paquetes alojados en Nixpkgs. Este token permitía realizar cambios directamente en cualquier paquete a través del repositorio Git del proyecto, eludiendo los procesos de revisión y verificación de cambios.

La posibilidad de comprometer Nixpkgs e insertar código propio en cualquier paquete fue demostrada por investigadores de seguridad en octubre del año pasado en la conferencia NixCon y se corrigió de inmediato en la infraestructura del proyecto. Sin embargo, los detalles del ataque realizado solo se revelaron un año después. El problema estaba relacionado con el uso en el repositorio de GitHub Nixpkgs de manejadores de GitHub Actions vinculados al evento 'pull_request_target' que realizaban verificaciones automatizadas al recibir nuevos pull requests.

A diferencia del evento 'pull_request', en 'pull_request_target' se le otorga a los manejadores acceso de lectura y escritura al ambiente de compilación, lo que requiere especial atención al trabajar con los datos enviados en el pull request. En uno de los manejadores vinculados a 'pull_request_target', se realizaba la verificación del archivo 'OWNERS' mencionado en el pull request, para lo cual se recogía y ejecutaba la utilidad codeowners-validator: steps: — uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf with: ref: refs/pull/$/merge path: pr — run: nix-build base/ci -A codeownersValidator — run: result/bin/codeowners-validator env: OWNERS_FILE: pr/ci/OWNERS

El problema era que, en caso de error en la configuración del archivo OWNERS, la utilidad codeowners-validator mostraba el contenido de la línea incorrectamente configurada en el registro estándar, accesible públicamente. El ataque consistió en colocar en el pull request un enlace simbólico llamado OWNERS, que apuntaba al archivo '.credentials', en el que se alojan las credenciales en el ambiente de compilación. En consecuencia, el procesamiento de este archivo condujo a un error y a la salida en el registro público de la primera línea que contenía el token de acceso al repositorio.

Vulnerabilidad en el controlador de GitHub Actions, permitiendo comprometer paquetes en Nixpkgs.

Además, se ha encontrado otra vulnerabilidad en el manejador que realiza la verificación de las reglas de editorconfig. steps: — name: Obtener lista de archivos modificados del PR run: gh api […] | jq [ … ] > «$HOME/changed_files» — uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 with: ref: refs/pull/$/merge — name: Verificando EditorConfig run: cat «$HOME/changed_files» | xargs -r editorconfig-checker

En este caso, el problema estaba en el uso de la utilidad «xargs» para ejecutar el programa editorconfig-checker con cada archivo del pull request. Dado que los nombres de los archivos no se verificaban por su validez, un atacante podía incluir en el pull request un archivo con caracteres especiales, que serían procesados al ejecutar la utilidad editorconfig-checker como argumentos de la línea de comandos. Por ejemplo, al crear un archivo «—help», la utilidad editorconfig-checker mostraría una ayuda sobre las opciones disponibles.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster