Compartir:
GitHub ha dado un paso significativo hacia la mejora de la seguridad del desarrollo de software con el lanzamiento de los nuevos CodeQL Community Packs. Estos paquetes son una colección extensa de consultas y modelos personalizadas que buscan potenciar las capacidades de análisis de código, complementando el conjunto estándar de CodeQL con recursos adicionales. Esta nueva oferta está dirigida tanto a investigadores de seguridad como a desarrolladores.
CodeQL, herramienta esencial en el análisis semántico del código, permite a los desarrolladores analizar sus bases de código como si fueran bases de datos, facilitando así la identificación de vulnerabilidades y errores de manera eficaz. El conjunto estándar de consultas de CodeQL se enfoca en una alta precisión y una reducción de falsos positivos, favoreciendo su integración sin problemas en los pipelines de CI/CD. Sin embargo, para escenarios donde el análisis es manejado por ingenieros de seguridad, se puede ajustar el balance entre falsos positivos y falsos negativos para asegurar que los errores no pasen desapercibidos, aunque esto requiera un esfuerzo adicional en la filtración.
Los CodeQL Community Packs se dividen en tres tipos principales de paquetes: ‘Model packs’, ‘Query packs’ y ‘Library packs’. Los ‘Model packs’ ofrecen modelos adicionales para el seguimiento de taint y resúmenes de bibliotecas no soportadas por los conjuntos estándar. Los ‘Query packs’ proporcionan consultas adicionales para mejorar la seguridad y calidad del código. Por último, los ‘Library packs’ aportan bibliotecas importantes para un análisis más exhaustivo.
Durante años, el GitHub Security Lab ha aprovechado estos paquetes, logrando resultados sobresalientes en la detección de vulnerabilidades mediante auditorías de consultas. Estos paquetes han sido fundamentales en revisiones de código manual, especialmente en proyectos complejos como Datahub y Home Assistant, donde han permitido identificar archivos que introducen datos no confiables al sistema.
Los CodeQL Community Packs están diseñados para varios lenguajes de programación, entre ellos Java, C# y Python, y se enfocan en minimizar la tasa de falsos negativos, lo cual los convierte en una herramienta invaluable para investigadores de seguridad. En el caso de Java, por ejemplo, los paquetes incluyen consultas para CVEs conocidos y nuevas contribuciones por ingenieros que facilitan el seguimiento de datos dentro de las aplicaciones.
Además, se han creado modelos de extensión para bibliotecas que permiten a CodeQL reportar rutas de flujo de datos no confiables. Esta mejora ha demostrado ser efectiva para detectar problemas de seguridad complejos, como ataques de inyección JNDI, que anteriormente podían pasar desapercibidos.
Los nuevos paquetes están disponibles para su integración en los flujos de trabajo de escaneo de código de GitHub y mediante la interfaz de línea de comandos de CodeQL, lo cual facilita a los desarrolladores añadir estos recursos a sus análisis. Este avance no solo destaca por su innovación tecnológica, sino también por su enfoque comunitario, incentivando a los desarrolladores a compartir sus propios modelos y consultas para enriquecer la seguridad del software de código abierto.