← Últimos artículos
💻 computer science

Prompt Structure Redistributes, Not Reduces: An Empirical Analysis of Security-Weaknesses in LLM-Generated Python Code

Este estudio empírico demuestra que, si bien los prompts estructurados y orientados a la seguridad mejoran significativamente el cumplimiento de los LLM y reducen las salidas inválidas, no logran disminuir consistentemente la prevalencia general de debilidades de seguridad en el código Python generado, sino que a menudo redistribuyen el riesgo al desplazar vulnerabilidades de alta severidad hacia otras de baja severidad e inducir una deriva semántica que altera silenciosamente la funcionalidad solicitada.

Autores originales: Maitreyee Das Urmi, Jessica Pourleyli, Fabio Santos, Glaucia Melo

Publicado 2026-08-26
📖 5 min de lectura🧠 Análisis profundo

Autores originales: Maitreyee Das Urmi, Jessica Pourleyli, Fabio Santos, Glaucia Melo

Artículo original bajo licencia CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta es una explicación generada por IA del artículo a continuación. No ha sido escrita ni avalada por los autores. Para mayor precisión técnica, consulte el artículo original. Leer descargo de responsabilidad completo

En el panorama moderno de la creación de software, ha surgido un nuevo tipo de asistente: los modelos de lenguaje extensos. Estos son potentes programas informáticos entrenados con vastas cantidades de texto, capaces de escribir código de computadora cuando se les solicita en lenguaje natural. Los desarrolladores los utilizan para acelerar su trabajo, escribiendo una descripción de una tarea y recibiendo a cambio un bloque de código. Sin embargo, al igual que un escritor humano podría incluir accidentalmente una idea peligrosa si no se le guía cuidadosamente, estas máquinas pueden producir código con fallos de seguridad ocultos. Para prevenir esto, los ingenieros utilizan una técnica llamada ingeniería de prompts, que consiste en diseñar instrucciones específicas para orientar al modelo hacia resultados más seguros. La esperanza predominante ha sido que, simplemente pidiendo al modelo que sea más cuidadoso o proporcionándole una plantilla estructurada para su respuesta, podríamos reducir significativamente el número de agujeros de seguridad en el software que genera.

Un equipo de investigadores se propuso probar si esta esperanza estaba plenamente justificada. Se centraron en una pregunta crítica: ¿el hecho de añadir más estructura y advertencias de seguridad a las instrucciones realmente hace que el código sea más seguro, o simplemente cambia la apariencia del código? Para encontrar la respuesta, llevaron a cabo un experimento a gran escala utilizando dos modelos de inteligencia artificial diferentes, uno de una importante empresa tecnológica y otro que es de uso público. Pidieron a estos modelos que resolvieran 424 tareas de programación específicas conocidas por ser propensas a riesgos de seguridad, como el manejo de archivos o la gestión de datos de usuario. Para cada tarea, probaron cinco versiones diferentes de instrucciones, que variaban desde una petición simple hasta un prompt altamente detallado que incluía reglas estrictas sobre estándares de seguridad y advertencias contra entradas maliciosas.

Los investigadores primero analizaron si los modelos siquiera intentarían escribir el código. Cuando se les daba una petición simple y no estructurada, el modelo más avanzado se negaba a generar código para la mayoría de las tareas sensibles a la seguridad, respondiendo a menudo con una negativa cortés en lugar de una solución. Sin embargo, una vez que los investigadores añadieron una plantilla estructurada que definía claramente el rol del ingeniero de software y especificaba exactamente cómo debía ser la salida, la tasa de rechazo disminuyó drásticamente. El modelo comenzó a producir código válido para casi todas las tareas. Este éxito inicial sugirió que las instrucciones estructuradas son excelentes para lograr que la máquina haga su trabajo, pero los investigadores necesitaban saber si el código que producía era realmente seguro.

Cuando analizaron el código válido que se generó, los resultados revelaron una realidad más compleja. Los investigadores utilizaron herramientas de escaneo especializadas para identificar debilidades de seguridad, categorizándolas según su peligrosidad. Descubrieron que, si bien los prompts más detallados y centrados en la seguridad sí redujeron el número de los fallos más graves, no eliminaron los problemas. En su lugar, la naturaleza de los fallos cambió. Las instrucciones parecían empujar al modelo a evitar los errores más obvios y peligrosos, pero al hacerlo, a menudo los reemplazaban con problemas menos severos, aunque todavía presentes. Para el modelo avanzado, la proporción de errores de alto riesgo cayó significamente, pero la proporción de errores de bajo riesgo aumentó. Era como si las instrucciones no hubieran limpiado la habitación, sino que simplemente hubieran movido la suciedad del centro del suelo hacia las esquinas.

Quizás el descubrimiento más sorprendente fue un fenómeno que los investigadores llamaron deriva semántica. En muchos casos, cuando las instrucciones se volvían más estrictas respecto a la seguridad, los modelos cambiaban silenciosamente la forma en que resolvían el problema para satisfacer las reglas de seguridad, incluso cuando la tarea original requería un enfoque específico y potencialmente arriesgado. Por ejemplo, si una tarea pedía al modelo que utilizara un método específico para ejecutar comandos del sistema, un prompt de seguridad estricto podría causar que el modelo intercambiara ese método por una alternativa más segura que técnicamente resolvía el problema, pero violaba el requisito específico. Esto sucedió en aproximadamente dos tercios de las tareas para el modelo avanzado cuando se usaron las instrucciones de seguridad más agresivas, mientras que el modelo de código abierto mostró una tasa de tales cambios mucho menor. El código era más seguro a los ojos de las herramientas de escaneo, pero ya no era exactamente lo que el desarrollador había pedido.

El estudio también destacó que estos efectos no eran los mismos para cada modelo. Mientras que el modelo avanzado mostró un cambio claro en cómo manejaba los riesgos, el modelo de código abierto respondió de manera menos consistente, con sus fallos de seguridad permaneciendo relativamente estables independientemente de cómo se redactaran las instrucciones. Además, los investigadores señalaron que las herramientas de escaneo que utilizaron, aunque efectivas para detectar patrones comunes, no podían detectar todos los peligros posibles. Algunos riesgos dependían de cómo se comportaba el código mientras se ejecutaba o del contexto específico en el que se utilizaba, áreas que el escaneo estático suele pasar por alto. Esto significa que el número de fallos encontrados era probablemente una estimación conservadora, y el riesgo real podría ser mayor.

En última instancia, la investigación sugiere que, si bien escribir mejores instrucciones es una herramienta poderosa para lograr que la inteligencia artificial genere código, no es una solución completa para la seguridad. Los prompts estructurados actúan más como un filtro que cambia la distribución de los riesgos en lugar de un escudo que los elimina. Son altamente efectivos para asegurar que la máquina siga las reglas y produzca resultados, y pueden reducir la severidad de los errores más peligrosos. Sin embargo, no garantizan que el código esté libre de vulnerabilidades, ni aseguran que el código permanezca fiel a la intención original del desarrollador. Los hallazgos indican que confiar únicamente en cómo se redacta una petición es insuficiente; una seguridad robusta sigue requiriendo revisión humana y capas adicionales de protección más allá del prompt inicial.

¿Ahogado en artículos de tu campo?

Recibe resúmenes diarios de los artículos más novedosos que coincidan con tus palabras clave de investigación — con resúmenes técnicos, en tu idioma.

Probar Digest →