Evaluación Comparativa de vulnerabilidades de seguridad en código generado por modelos LLM.

Los modelos de lenguaje a gran escala (LLMs), como ChatGPT, DeepSeek, Microsoft Copilot, se han popularizado como asistentes de programación por su facilidad de uso y capacidad para generar código a partir de instrucciones simples. Entre las aplicaciones de estos modelos se destacan la creación de f...

Full description

Autores:
Rivera Ladino, Josue Mauricio
Tipo de recurso:
Trabajo de grado de pregrado
Fecha de publicación:
2025
Institución:
Universidad de los Andes
Repositorio:
Séneca: repositorio Uniandes
Idioma:
spa
OAI Identifier:
oai:repositorio.uniandes.edu.co:1992/76269
Acceso en línea:
https://hdl.handle.net/1992/76269
Palabra clave:
IA
Generación de código
Vulnerabilidades en código
LLM
Ingeniería
Rights
openAccess
License
Attribution-NoDerivatives 4.0 International
Description
Summary:Los modelos de lenguaje a gran escala (LLMs), como ChatGPT, DeepSeek, Microsoft Copilot, se han popularizado como asistentes de programación por su facilidad de uso y capacidad para generar código a partir de instrucciones simples. Entre las aplicaciones de estos modelos se destacan la creación de funciones, consultas de bases de datos, interfaces web y algoritmos complejos. Sin embargo, estos modelos también presentan riesgos importantes, ya que el código generado puede tener vulnerabilidades de seguridad que permiten inyecciones de código, filtraciones de datos o errores en autenticación. El problema principal que este trabajo estudia es la presencia de debilidades de seguridad en el código generado automáticamente por modelos LLM. Estudios recientes han revelado que tal código podría estar sujeto a inyecciones de código u otros defectos que pueden resultar en la filtración de datos privados o vulnerabilidades en la autenticación del usuario. Este tipo de vulnerabilidades podría potencialmente generarse por malas prácticas que el modelo introduce automáticamente y aprende incorrectamente del contexto, o simplemente se introduce gracias a una mala validación del usuario. Dada la creciente dependencia de estas herramientas, la falta de garantías de seguridad sobre el código representa una amenaza real para los desarrolladores y las organizaciones. En respuesta a este desafío, este trabajo propone un enfoque de evaluación sistemática que aprovecha herramientas de análisis estático de código (SAST), como SonarQube y Flawfinder, junto con revisión manual y una interacción iterativa con el modelo sobre un conjunto de casos de prueba. Este conjunto de casos, que aborda tareas típicas de desarrollo, fue diseñado y usado de manera uniforme sobre tres modelos generativos. El código generado fue analizado y las vulnerabilidades identificadas fueron luego analizadas en relación con los marcos OWASP Top 10 y MITRE CWE Top 25, con el fin de realizar un análisis cuantitativo y cualitativo respecto a la ocurrencia, tipos y permanencia de las vulnerabilidades. La tendencia general en los resultados es que todos los modelos probados, en la gran mayoría de casos de prueba, produjeron código defectuoso. Algunos modelos pueden corregir parcialmente dichos errores si se les solicita, pero encontramos que en el código generado después de pedir la corrección puede haber reintroducción de vulnerabilidades, o nuevas vulnerabilidades que no existían en la versión original. Los hallazgos más importantes incluyen la existencia de patrones consistentes de errores por modelo y lenguaje usado, las diferencias entre los modelos en la capacidad de autocorregirse, la permanencia de debilidades importantes, y cuál de esos modelos es el mejor en términos de rendimiento general, para la generación de código seguro, el descubrimiento de vulnerabilidades y su corrección. Dichos resultados ayudan a identificar las fortalezas y debilidades de los modelos y pueden ser una buena referencia para futuras comparaciones con nuevas bibliotecas LLM.