
Defensa Tesis Licenciatura Pablo Balbi
20 septiembre, 2023 @ 1:00 pm - 2:00 pm
Director: Diego Garbervetsky
Jurados: Dr Rodrigo Castro, Lic Javier Godoy
Resumen: En la actualidad, las técnicas de análisis estático de código son una herramienta muy usada para detectar, de manera temprana, vulnerabilidades de seguridad durante etapas tempranas en el proceso de desarrollo. Taint analysis es un tipo particular de análisis, con prestaciones que lo caracterizan como un gran candidato para detectar fallas muy comunes en aplicaciones web, como son los ataques de inyección. Si bien las técnicas para llevar a cabo este tipo de análisis están ampliamente estudiadas, el mismo depende de una serie de especificaciones que indican qué elementos de un programa podrían estar involucrados en una vulnerabilidad.
En esta tesis se presenta una técnica de inferencia de especificaciones de taint analysis, para el lenguaje JavaScript. La implementación de la misma surge de combinar un método ya existente basado en aprendizaje automático, con el motor de análisis estático CodeQL. La técnica presentada parte un grafo que modela la propagación de datos a lo largo de un programa, y construye un modelo de optimización lineal que resuelve el problema de inferencia de manera escalable. Las especificaciones producidas se expresan en una representación que permite generalizar un fragmento de código, para así poder reconocer casos similares en otros programas.
Además, se presenta una nueva metodología de evaluación que no requiere supervisión alguna, a fin de cuantificar el potencial de la técnica para inferir nuevas especificaciones. Mediante esta metodología, se evalúa el procedimiento presentado en el trabajo, sobre un conjunto de alrededor de setecientos programas afectados por cuatro clases diferentes de vulnerabilidades de seguridad, alcanzando valores de recall cercanos al 80%.