GitHub ha lanzado una nueva iniciativa destinada a mejorar la seguridad y la eficacia del análisis de código con la introducción de los CodeQL Community Packs. Esta colección se compone de consultas y modelos avanzados diseñados específicamente para complementar el conjunto estándar de CodeQL, el cual ya es ampliamente utilizado por desarrolladores e investigadores de seguridad para detectar vulnerabilidades y errores en el código fuente.
CodeQL es una potente herramienta de análisis semántico que transforma los programas en bases de datos, permitiendo a los desarrolladores realizar consultas complejas para descubrir posibles debilidades en el código. Mientras que el conjunto estándar de consultas está optimizado para reducir los falsos positivos, los CodeQL Community Packs ofrecen la flexibilidad de ajustar este equilibrio, permitiendo a los ingenieros de seguridad priorizar la identificación de errores reales antes que descartar posibles falsas alarmas.
Estos nuevos paquetes incluyen principalmente tres tipos de recursos: los ‘Model packs’, que proporcionan modelos adicionales para el seguimiento de flujo de datos a través de bibliotecas y marcos no soportados por el conjunto estándar; los ‘Query packs’, con consultas adicionales enfocadas en la seguridad y auditoría del código; y los ‘Library packs’, que aunque no contienen directamente consultas, aportan bibliotecas esenciales para un análisis más detallado.
El GitHub Security Lab, que ha llevado a cabo exhaustivas pruebas en los últimos años, ha cosechado significativos éxitos en la identificación de vulnerabilidades utilizando estos paquetes. Han demostrado ser especialmente eficaces durante las revisiones manuales de código en proyectos como Datahub y Home Assistant, donde el seguimiento exhaustivo de datos no confiables ha aportado un valor incalculable al enfrentar grandes bases de código.
Los CodeQL Community Packs están disponibles para lenguajes de programación como Java, C# y Python, y están diseñados para mejorar la relación señal-ruido al enfocarse en minimizar los falsos negativos. Este enfoque los hace particularmente útiles para la comunidad de investigadores de seguridad. Por ejemplo, los paquetes para Java incluyen consultas adaptadas para vulnerabilidades conocidas y nuevos modelos que optimizan el seguimiento de taint, facilitando así la identificación de rutas de datos inseguras.
Además, se han introducido modelos de extensión que permiten a CodeQL detectar con mayor precisión las rutas de flujo de datos no confiables, fruto de un análisis minucioso de cómo las aplicaciones manejan datos no confiables hacia APIs de terceros. Esto es crucial para identificar problemas de seguridad importantes, como la inyección JNDI.
Estos paquetes son fácilmente accesibles tanto en las plataformas de escaneo de código de GitHub como a través de la interfaz de línea de comandos de CodeQL. Este acceso simplificado permite a los usuarios integrar rápidamente estos recursos en sus análisis en curso. Asimismo, GitHub fomenta la colaboración comunitaria, invitando a desarrolladores a contribuir con sus propios modelos y consultas, reforzando así la seguridad del software de código abierto a nivel global.