En la era actual de la inteligencia artificial, los modelos de lenguaje grandes (LLMs, por sus siglas en inglés) se han convertido en herramientas fundamentales para el desarrollo de software, automatización y creación de contenido. Sin embargo, un análisis presentado por la empresa Backslash Security ha puesto en evidencia que estos LLMs populares producen código vulnerable por defecto, lo que genera preocupaciones significativas en cuanto a la seguridad informática y la integridad del software que se construye con su ayuda. Los resultados de la investigación de Backslash Security muestran que cuando los desarrolladores utilizan los modelos de lenguaje más reconocidos, como las versiones actuales de OpenAI GPT, Anthropic Claude y Google Gemini, estos generan código con vulnerabilidades comunes y peligrosas. Las fallas más recurrentes incluyen inyección de comandos, ataques cross-site scripting (XSS) tanto en el backend como en el frontend, cargas inseguras de archivos y problemas de recorrido de rutas. Estas vulnerabilidades son particularmente alarmantes porque no solo afectan a aplicaciones web, sino que también pueden abrir la puerta a compromisos de seguridad graves, robo de datos y explotación remota.
Además, la simplicidad en los prompts —o indicaciones— que los desarrolladores suelen usar, es decir, peticiones básicas sin especificar parámetros de seguridad, parece ser un factor que contribuye a que el código generado sea inseguro. Un aspecto inquietante señalado por el cofundador y CTO de Backslash Security, Yossi Pik, es la sensibilidad a la calidad del prompt y la posibilidad de que los modelos generen código incorrecto o incluso “alucinaciones”, un fenómeno en el que la IA produce respuestas o resultados que carecen de fundamento o son erróneos. Esto representa un desafío para los equipos de seguridad que deben validar y auditar el código generado por estas herramientas de manera constante y rigurosa. El estudio probó las respuestas de siete modelos diferentes, incluyendo distintos niveles y versiones de los sistemas de OpenAI, Anthropic y Google. El enfoque se centró en cómo varía la seguridad del código en función del tipo de prompt utilizado.
Cuando se usaron indicaciones ingenuas, es decir, que solo pedían generar código para una funcionalidad sin especificar consideraciones de seguridad, todos los LLMs generaron código vulnerable relacionado con al menos cuatro de las diez principales debilidades listadas en el sistema de Enumeración de Debilidades Comunes (CWE). Incluso cuando los prompts fueron diseñados para incluir una referencia general a la seguridad —por ejemplo, solicitar que el código sea “seguro”— o para seguir las mejores prácticas definidas por OWASP (Open Web Application Security Project), el código generado seguía presentando vulnerabilidades en la mayoría de los modelos. Solo en algunos casos se observó una mejora significativa, pero ninguna IA logró eliminar todas las fallas de forma consistente. En cuanto al rendimiento de los modelos, hubo diferencias notables. Uno de los peores desempeños lo presentó el modelo GPT-4o, que sólo produjo código libre de vulnerabilidades en el diez por ciento de las ocasiones cuando se usaron prompts ingenuos.
Al intentar mejorar el resultado con un prompt genérico que indicaba asegurar la seguridad del código, este porcentaje apenas subió al veinte. Sin embargo, el GPT-4o alcanzó un índice del 65 por ciento en la generación de código seguro cuando se le dio la instrucción específica de seguir las mejores prácticas de codificación definida por OWASP. Por otro lado, la versión Claude 3.7-Sonnet de Anthropic mostró un desempeño más alentador. Con prompts ingenuos, generó código seguro en el 60 por ciento de los casos y, con indicaciones genéricas de seguridad, logró un desempeño perfecto al generar código libre de vulnerabilidades en el 100 por ciento de las veces evaluadas.
Esto resalta la diversidad en las capacidades y entrenamientos de los diferentes modelos y cómo estas diferencias pueden influir en la seguridad del resultado. Un punto interesante del estudio es que ninguno de los modelos analizados mostró vulnerabilidades relacionadas con inyecciones SQL, que es la tercera debilidad más común en los repositorios de código abierto. Los investigadores sugieren que esto puede deberse a que los LLMs fueron entrenados específicamente para evitar este tipo de fallas, aunque parece que se dejaron vulnerabilidades en otras áreas menos populares o menos enfocadas durante el entrenamiento. El hallazgo general que emerge es que, aunque los modelos de lenguaje tienen un potencial enorme para acelerar la producción de software, todavía se encuentran en una etapa temprana en términos de codificación segura. Los expertos de Backslash Security recomiendan que los equipos de seguridad adopten enfoques estrictos en las reglas para el diseño de prompts, buscando garantizar que las solicitudes a los modelos sean lo suficientemente específicas para incluir criterios de seguridad desde el inicio.
Además, sugieren que se incorporen herramientas automatizadas que monitoricen y analicen el código generado para detectar posibles vulnerabilidades antes de que sean desplegadas en ambientes productivos. El rol de la ingeniería de prompts se vuelve vital, ya que muchos desarrolladores todavía están aprendiendo a interactuar con estas tecnologías y no suelen contar con formación especializada en seguridad o ingeniería de prompts para seguridad. Esta tendencia también abre una oportunidad única para que los equipos de seguridad institucionalicen y escalen las mejores prácticas de codificación segura dentro de las organizaciones a través de la automatización. Al integrar estas directrices en las fases iniciales de la generación de código asistida por IA, se podrían reducir considerablemente las vulnerabilidades, lo que a la larga mejora la calidad y robustez del software producido. En conclusión, aunque los LLMs representan un avance disruptivo para la automatización y innovación en desarrollo de software, el reto de la seguridad sigue siendo una barrera importante.
Para explotar plenamente las ventajas de estas tecnologías será imprescindible mejorar el entrenamiento de los modelos, diseñar prompts más robustos y establecer controles estrictos para validar el código generado. Solo así se podrá evitar que la facilidad que ofrece esta tecnología se traduzca en un aumento de riesgos y amenazas para las aplicaciones y sus usuarios.