En los últimos meses, se ha conseguido asegurar más de 75 flujos de trabajo en GitHub Actions dentro de proyectos de código abierto, identificando más de 90 vulnerabilidades distintas. Este esfuerzo ha dado lugar a una mejora en el soporte de CodeQL para flujos de trabajo, permitiendo a los desarrolladores proteger sus proyectos de manera más eficaz.
A través de una serie de artículos dirigidos a mantener la seguridad de los flujos de trabajo de GitHub Actions, se han abordado las vulnerabilidades más comunes y las formas de enfrentarse a ellas. Sin embargo, estas debilidades persisten debido a la falta de conocimiento sobre el funcionamiento de los componentes y el posible impacto que pueden tener estas vulnerabilidades en una organización o repositorio.
Para mitigar la introducción de vulnerabilidades y facilitar la identificación y corrección de las existentes, se ha añadido soporte de CodeQL para GitHub Actions. Este nuevo paquete permite escanear tanto flujos de trabajo existentes como nuevos, y siendo el escaneo de código y Copilot Autofix gratuitos para repositorios de código abierto, todos los repositorios públicos de GitHub podrán beneficiarse de estas nuevas consultas para mejorar la detección y solución de vulnerabilidades.
El desarrollo ha implicado nuevas funcionalidades para CodeQL, incluyendo el seguimiento de contaminación y soporte para bash, lo que facilita la identificación de patrones complejos de vulnerabilidad y fuentes de datos no confiables. Por ejemplo, el seguimiento de contaminación ayuda a descubrir instancias donde datos no confiables se interpolan en un script, potencialmente conduciendo a inyecciones de código.
Los scripts de Bash, siendo de los más comunes en flujos de trabajo de GitHub, hacen que su inclusión en las nuevas consultas de CodeQL sea esencial. Identificar datos contaminados y rastrear su flujo a través de un script es vital para prevenir posibles vulnerabilidades.
El análisis detallado de acciones de terceros ha identificado 62 fuentes, 129 resúmenes y 2199 contenedores vulnerables. A través de este enfoque, se han desarrollado 18 nuevas consultas que van más allá de la simple inyección de código, abordando temas como la exposición excesiva de secretos y la inyección de variables de entorno.
Recientemente, se realizaron pruebas en miles de proyectos de código abierto para validar la precisión y el rendimiento de estas nuevas consultas, logrando resultados positivos que permitieron identificar y notificar vulnerabilidades en organizaciones cruciales como Microsoft, GitHub, Adobe y Apache.
Con estas herramientas y técnicas, se espera que los desarrolladores puedan proteger mejor sus flujos de trabajo en GitHub y prevenir ataques en la cadena de suministro del software de código abierto. Los repositorios interesados pueden comenzar a habilitar el análisis de acciones en sus configuraciones para aprovechar esta nueva capacidad de seguridad.