De principiante a experto con CodeQL: Investigación en seguridad con CodeQL (Parte 3)

Elena Digital López

El análisis estático y la creación de consultas CodeQL han ganado popularidad en la investigación de seguridad, especialmente en la búsqueda de vulnerabilidades en bases de código. Recientemente, se ha profundizado en el uso avanzado de CodeQL, incluyendo el análisis de variantes, la escritura de consultas de rastreo de contaminaciones y diversas técnicas de investigación de seguridad.

Uno de los métodos presentados es cómo consultar métodos específicos de bibliotecas. En un ejemplo sobre auditoría de aplicaciones Django para inyección SQL, se ilustra cómo encontrar llamadas a funciones específicas, como execute() en django.db.connection.cursor(). A través de ejemplos de código y consultas prácticas se muestra cómo aplicar estos conocimientos para identificar posibles vulnerabilidades en el código.

El autor también comenta sobre el uso extensivo de CodeQL en su flujo de trabajo de investigación de seguridad, destacando su capacidad para detectar vulnerabilidades divulgadas y proporcionando una base para comprender qué tipo de vulnerabilidades se pueden encontrar utilizando esta herramienta.

En la explicación técnica, se presentó cómo usar gráficas API para referirse a funciones y clases externas en lenguajes dinámicos, y cómo construir consultas específicas en CodeQL para detectar patrones de seguridad vulnerables. Además, se ofrecen desafíos para los practicantes, disponibles en GitHub Security Lab, para aplicar y refinar sus habilidades en el uso de CodeQL.

La presentación aborda también cómo ejecutar consultas de rastreo de contaminaciones en CodeQL, explicando las diferencias entre el análisis de flujo de datos y el rastreo de contaminaciones, y mostrando ejemplos concretos sobre cómo escribir una configuración de rastreo de contaminaciones. Se introduce tanto la nueva API de rastreo de contaminaciones como la antigua, proporcionando claridad sobre las diferencias y cuándo utilizar cada una.

Finalmente, se destaca la importancia del análisis de variantes en la identificación de patrones de vulnerabilidades recurrentes en bases de código grandes. Se resalta cómo CodeQL permite modelar fuentes y sumideros en el código para representar el flujo de datos no confiables y cómo detectar estas conexiones utilizando análisis de flujo de datos y de contaminaciones.

CodeQL, al modelar las fuentes y sumideros y utilizar técnicas avanzadas, se posiciona como una herramienta esencial para los investigadores de seguridad en la detección y análisis de vulnerabilidades en múltiples proyectos, al mismo tiempo que facilita la realización de auditorías de seguridad de manera más eficiente y precisa.

Scroll al inicio