Este fin de semana he aprovechado par leerme un paper que ha sido publicado a principios de este mes, donde se habla de una variación de los ataques de Indirect Prompt Injection, utilizando una variante llamada Agent Data Injection, y que está muy bien pensada, para lograr que un ataque cambie su comportamiento y realice acciones controladas por un atacante.
Las técnicas de Indirect Prompt Injection buscan dejar Instrucciones Maliciosas almacenadas en fuentes de datos externas que un Agente IA va a procesar para realizar su tarea. Al procesar esos datos inseguros, ya sean páginas web, repositorios de GitHub o correos electrónicos, el Agente IA va encontrarse un Prompt que va a cambiar su comportamiento produciendo un Desalineamiento de su funcionamiento.
escrito por Chema Alonso con la colaboración de Pablo González, Fran Ramírez, Amador Aparicio, Manuel S. Lemos y José Palanco en 0xWord
Para evitar estos Desalineamiento, los modelos están siendo construidos con Guardarraíles, y los Agentes IA son diseñados con Harnesses, que evitan que el comportamiento final se salga de los objetivos para los que ha sido diseñado uno de estos Agentes IA. Teniendo en cuenta esto, el trabajo de "Agent Data Injection Attacks are Realistic Threats to AI Agents" propone una nueva forma de desalinear al Agente IA.
La aproximación en este caso no se trata de Inyectar Instrucciones Maliciosas, sino de Inyectar Objetos de Información, que formen parte de los Datos de Contexto del Agente IA para manipular la información sobre la que va a tomar sus decisiones y ejecutar sus acciones.
Como se ve en la imagen anterior, el objetivo es meter datos en los Agentes IA, y para eso se utilizan los Datos Inseguros que éste procesa - es decir, los e-mails, webs, repositorios de GitHub, etc... - con datos manipulados que simulan ser Objetos con Datos en el Agente IA. Para hacer esto, hacen inyección de datos con separadores de información, como se ve en la imagen siguiente.
Como se puede ver en la imagen, el Agente IA llama a una herramienta de lectura de datos inseguros, como una página web, o a la lista de correos electrónicos entregada por un MCP. Y en uno de esos correos se han inyectado caracteres para formar un Metadato que representa a un Objeto e-mail. Es decir, si miráis el "Body" del correo, veis que han inyectado un .\"} que cierra el formato del primer Objeto e-mail para luego comenzar a inyectar un Objeto e-mail completo, codificando el mensaje con sus metadatos. El resultado final es que el Agente IA entiende que ha recibido 2 Objetos e-mail en lugar de solo 1.
Ataques de Agent Data Injection
Esto genera que un atacante pueda inyectar Objetos con Datos que van a ser parte de la toma de decisiones y acciones que realizará el Agente IA. Por ejemplo, en el caso siguiente, el usuario pide resumir las revisiones de un determinado producto de una tienda. El Agente IA lanza la herramienta de leer página, y esta página le entrega los datos de formato de Objetos, delimitados por corchetes y los textos entrecomillados.
Un atacante puede inyectar en una de las review los caracteres para inyectar un Objeto nuevo - como un botón - codificándolo con los caracteres con los que se construyen los metadatos de los objetos, dentro del Texto de una de las Review. En este caso un botón que no existe en la web de "Read More" con una Ref_3, que es la misma Ref_3 que tiene el botón "Buy Now". Así que, con el Agent Data Injection, se ha conseguido forzar una compra cuando el Agente IA quería simplemente "Read More".
En el siguiente ejemplo se hace buscando en la Knowledge Base, donde se busca información sobre como solucionar un problema, y la herramienta devuelve el objeto con la respuesta que resuelve el problema. Si en esa respuesta de produce un Agent Data Injection, esto se puede manipular.
El atacante inyecta un comentario que inyecta un objeto completo con una pregunta y una respuesta completa, pero cuya respuesta es maliciosa, formateando con los delimitadores de los metadatos el objeto malicioso.
Al final, estos ataques lo que hacen es buscar meter en el conjunto de datos que utiliza el Agente IA, datos como si fueran objetos con sus metadatos devueltos por la herramienta, haciendo inyección de delimitadores para formatear los objetos. Muy interesante.
Figura 10: Hacking & Pentesting con Inteligencia Artificial.
Por supuesto, es una técnica de inyección basada en la no satinización de los datos que tenemos en los modelos de IA, y esta técnica de Agente Data Injection es a Prompt Injection, como lo son los Connection String Parameter Pollution Attacks a las técnicas de SQL Injection. Mismo concepto, diferente manera de explotar, diferentes objetivos.
¡Saludos Malignos!
Autor: Chema Alonso (Contactar con Chema Alonso)











No hay comentarios:
Publicar un comentario