RESUMEN
- Paquete afectado: github/codeql-action (GitHub Actions)
- Versiones afectadas: >= 3.26.11, <= 3.28.2, >= 2.26.11, < 3.0.0
- Versión parcheada: 3.28.3
- Gravedad: Alta [7.1 / 10]
RESUMEN DEL IMPACTO
En algunas circunstancias, los artefactos de depuración cargados por CodeQL Action después de una ejecución fallida del flujo de trabajo de escaneo de código pueden contener las variables de entorno de la ejecución del flujo de trabajo, incluyendo cualquier secreto que haya sido expuesto como variable de entorno al flujo de trabajo.
Los usuarios con acceso de lectura al repositorio podrían acceder a este artefacto, que contiene cualquier secreto del entorno.
Para algunas ejecuciones de flujo de trabajo afectadas, las variables de entorno expuestas en los artefactos de depuración incluían un GITHUB_TOKEN válido para la ejecución del flujo de trabajo, que tiene acceso al repositorio en el que se ejecutó el flujo de trabajo, y todos los permisos especificados en el flujo de trabajo o el trabajo. El GITHUB_TOKEN es válido hasta que el trabajo se complete o hayan transcurrido 24 horas, lo que ocurra primero.
Las variables de entorno sólo se exponen desde las ejecuciones de flujo de trabajo que satisfacen todas las condiciones siguientes:
- Flujo de trabajo de escaneo de código configurado para escanear los lenguajes Java/Kotlin.
- Ejecutado en un repositorio que contiene código fuente Kotlin.
- Ejecutando con artefactos de depuración habilitados.
- Usando versiones de CodeQL Action <= 3.28.2, y versiones de CodeQL CLI >= 2.9.2 (Mayo 2022) y <= 2.20.2.
- La ejecución del flujo de trabajo falla antes de que se finalice la base de datos CodeQL dentro del paso github/codeql-action/analyze.
- Ejecución en cualquier entorno GitHub: GitHub.com, GitHub Enterprise Cloud y GitHub Enterprise Server.
Nota: los artefactos sólo son accesibles para los usuarios dentro del mismo entorno de GitHub con acceso al repositorio analizado
El GITHUB_TOKEN expuesto de esta manera sólo habría sido válido para las ejecuciones de flujo de trabajo que satisfagan todas las condiciones siguientes, además de las condiciones anteriores:
- Usando versiones de CodeQL Action >= 3.26.11 (octubre 2024) y <= 3.28.2, o >= 2.26.11 y < 3.
- Ejecutándose únicamente en GitHub.com o GitHub Enterprise Cloud [no válido en GitHub Enterprise Server].
En raras ocasiones durante la configuración avanzada, el registro de variables de entorno también puede ocurrir durante la creación de bases de datos de Java, Swift, y C / C ++.
DETALLES DEL IMPACTO
En las versiones de CodeQL CLI >= 2.9.2 y <= 2.20.2, el extractor CodeQL Kotlin registra por defecto todas las variables de entorno en un archivo intermedio durante el proceso de creación de una base de datos CodeQL para código Kotlin.
Esto es una parte del CodeQL CLI y es invocado por la Acción CodeQL para analizar repositorios Kotlin.
En las Acciones, las variables de entorno registradas incluyen GITHUB_TOKEN, que otorga permisos al repositorio que se está analizando.
El archivo intermedio que contiene las variables de entorno se elimina al finalizar la base de datos, por lo que no se incluye en una base de datos creada correctamente. Sin embargo, se incluye en el artefacto de depuración que se carga en una ejecución de análisis fallida si la Acción CodeQL se invocó en modo de depuración.
Por lo tanto, bajo estas circunstancias específicas [creación incompleta de la base de datos usando la Acción CodeQL en modo debug] un atacante con acceso al artefacto debug obtendría acceso no autorizado a los secretos del repositorio desde el entorno, incluyendo tanto el GITHUB_TOKEN como cualquier secreto configurado por el usuario puesto a disposición a través de variables de entorno.
El impacto del GITHUB_TOKEN filtrado en este entorno es limitado:
Para los flujos de trabajo en GitHub.com y GitHub Enterprise Cloud que utilizan versiones de CodeQL Action >= 3.26.11 y <= 3.28.2, o >= 2.26.11 y < 3, que a su vez utilizan la biblioteca actions/artifacts v4, el artefacto de depuración se carga antes de que se complete el trabajo del flujo de trabajo. Durante este tiempo el GITHUB_TOKEN sigue siendo válido, proporcionando una oportunidad para que los atacantes obtengan acceso al repositorio.
Para todos los demás flujos de trabajo, el artefacto de depuración se carga después de que el trabajo de flujo de trabajo se completa, momento en el cual el GITHUB_TOKEN filtrado ha sido revocado y no puede ser utilizado para acceder al repositorio.
MITIGACIONES
Actualiza a CodeQL Action versión 3.28.3 o posterior, o CodeQL CLI versión 2.20.3 o posterior.
PARCHES
Esta vulnerabilidad se solucionará en la versión 2.20.3 de CodeQL CLI, en la que la creación de bases de datos para todos los idiomas ya no registra el entorno completo por defecto.