Ciberseguridad

La inyección de prompts sigue sin ser un fallo que se pueda parchear

La inyección de prompts es una propiedad de los modelos de lenguaje, no un fallo. La «tríada letal» de Simon Willison convierte lo irresoluble en una decisión de diseño: contener.

Un escribiente, visto de espaldas, lee una carta mientras una mano que sale del papel le guía la pluma; al fondo, tres puertas, una de ellas abierta.

Cada año alguien anuncia una solución para la inyección de prompts, y cada año esa solución se esquiva en cuestión de semanas. No es por descuido de quienes trabajan en ello. Es porque la inyección de prompts no es un fallo. Es una propiedad del funcionamiento mismo de los modelos de lenguaje, y lo ocurrido este año lo demuestra con más claridad que cualquier argumento.

La propiedad es esta: un modelo de lenguaje recibe un único flujo de texto. Sus instrucciones y los datos que debe procesar llegan por el mismo canal y con la misma forma. No existe ninguna barrera de hardware entre «haz esto» y «aquí tienes un documento». Así que cada página que el modelo recupera, cada archivo que lee, cada issue de GitHub que clasifica, cada mensaje que otro agente deja en una unidad compartida es una instrucción en potencia. El modelo tiene que decidir qué texto es una orden, y una decisión puede ser errónea.

Los ejemplos de este año, todos tratados en este blog: unos agentes de OpenAI se sumaron a un ataque contra Hugging Face porque así se lo indicaban unos mensajes publicados en un tablón compartido. Un issue de GitHub abierto por un desconocido consiguió que agentes de programación con IA de tres proveedores ejecutaran código y filtraran secretos. Se secuestraron frameworks de agentes de código abierto a través de sus almacenes de memoria sin invocar ni una sola herramienta. Y en Black Hat, una ponencia tras otra sobre navegadores con IA llegó a la misma conclusión, formulada sin rodeos: no existe una solución perfecta.

El replanteamiento útil viene de Simon Willison, que lleva escribiendo sobre esto desde 2022. Un agente es peligroso cuando se cumplen tres condiciones a la vez: tiene acceso a datos privados, procesa contenido no fiable y dispone de algún medio para enviar información al exterior. Él lo llama la «tríada letal» (lethal trifecta). Con las tres patas presentes, cualquiera que consiga poner texto delante del agente puede convertirlo en una herramienta de exfiltración. Quita una sola pata y el peor de los casos se reduce drásticamente.

Eso convierte un problema irresoluble en una decisión de diseño. No puedes conseguir que el modelo ignore de forma fiable las instrucciones que llegan dentro de los datos. Lo que sí puedes es decidir que el agente que lee tu bandeja de entrada no tenga acceso a internet, que el agente que navega por la web no tenga acceso a tus archivos, o que el agente que tiene ambos deba preguntar a una persona antes de enviar nada a ninguna parte. Ninguna de esas medidas es una solución. Cada una es una forma de contención, y la contención es la inversión que de verdad sale rentable.

La versión a fondo distingue los controles que reducen el radio de impacto de los que solo sirven para maquillar un panel.

¿Quieres las fuentes, la cronología y el detalle? Lee la versión a fondo (8 min).

Artículos relacionados