Nuevos Paquetes Comunitarios de CodeQL: Un Impulso a la Seguridad del Código

Elena Digital López

GitHub ha dado un paso adelante en el ámbito del análisis de código al lanzar los nuevos CodeQL Community Packs, una colección robusta de consultas y modelos diseñados específicamente para potenciar las capacidades de análisis de software. Estos paquetes han sido creados para complementar el conjunto estándar de consultas de CodeQL, proporcionando herramientas adicionales tanto para investigadores de seguridad como para desarrolladores.

CodeQL, reconocido por su capacidad para interrogar bases de código como si fueran bases de datos, facilita la detección de vulnerabilidades, errores y patrones de manera eficiente. El conjunto estándar se caracteriza por su precisión y bajos índices de falsos positivos, lo que lo hace ideal para su integración en cadenas de CI/CD. Sin embargo, cuando la gestión de alertas cae en manos de ingenieros de seguridad o investigadores, el enfoque se puede modificar para priorizar la detección de falsos negativos, asegurando que ningún error pase desapercibido, aunque esto incremente el esfuerzo de clasificación.

Los CodeQL Community Packs están compuestos por tres tipos de paquetes clave. Los ‘Model packs’ ofrecen modelos adicionales para el seguimiento de taint y resúmenes de bibliotecas y marcos no soportados por los conjuntos estándar. Los ‘Query packs’ brindan consultas de seguridad y auditoría que ayudan a identificar posibles vulnerabilidades y mejorar la calidad del código. Los ‘Library packs’, aunque no incluyen consultas, ofrecen bibliotecas fundamentales para un análisis exhaustivo.

El GitHub Security Lab ha implementado estos paquetes con éxito, logrando resultados significativos en la detección de vulnerabilidades mediante auditorías detalladas. Estas auditorías han sido cruciales en revisiones de código manuales profundas para proyectos destacados como Datahub y Home Assistant, permitiendo un análisis detallado de las rutas de datos en grandes bases de código.

Con un enfoque particular en lenguajes como Java, C# y Python, los CodeQL Community Packs buscan mejorar la relación señal-ruido mediante una baja tasa de falsos negativos, beneficiando especialmente a los investigadores de seguridad. Por ejemplo, en el caso de Java, se incluyen consultas para vulnerabilidades conocidas, consultas de seguridad nuevas, y plantillas para el seguimiento de taint, mejorando la exploración de rutas de datos.

A su vez, se han desarrollado modelos extensivos para bibliotecas, lo que permite a CodeQL reportar rutas de flujo de datos no confiables, algo crucial en la detección de problemas de seguridad, como la conocida inyección JNDI. Esta capacidad mejorada refleja un análisis detallado de aplicaciones que manejan datos no confiables a través de APIs de terceros.

Los nuevos paquetes están disponibles tanto en flujos de trabajo de escaneo de código de GitHub como mediante la interfaz de línea de comandos de CodeQL, facilitando su incorporación a los análisis existentes. El desarrollo de estos recursos enfatiza la colaboración comunitaria, incentivando a los desarrolladores a contribuir con sus propios modelos y consultas para fortalecer la seguridad del software de código abierto.