Cómo weaponizar el escalado de imágenes para atacar sistemas de IA en producción
(blog.trailofbits.com)- Es posible atacar sistemas de IA en producción aprovechando vulnerabilidades de escalado de imágenes
- Una imagen que a simple vista parece normal puede convertirse, al reducirse de tamaño, en una carga de prompt injection que permite la exfiltración de datos
- Este ataque se confirmó en diversos servicios reales, como Google Gemini CLI, y explota la desalineación entre lo que percibe el usuario y lo que recibe el modelo como entrada
- Las técnicas de ataque y su impacto varían según el algoritmo de downscaling y su implementación, y es posible experimentar con ataques de imagen usando la herramienta open source Anamorpher
- Como defensas, se recomienda mostrar una vista previa de la entrada, aplicar patrones de diseño seguros y exigir una aprobación explícita del usuario
Contexto y planteamiento del problema
- Existe un escenario de ataque en el que, al ingresar una imagen aparentemente común en un sistema de IA como un LLM, una prompt injection multimodal oculta se activa durante el proceso de downscaling y filtra datos del usuario hacia el exterior
- Esta vulnerabilidad existe porque la imagen que realmente se entrega al modelo pasa por un proceso de escalado, y en ese proceso queda expuesta la carga maliciosa insertada por el atacante
Ataques de escalado de imágenes dirigidos a sistemas de IA en producción
- En esta publicación de blog se demuestra que la vulnerabilidad de escalado de imágenes puede explotarse en ataques reales contra distintos productos de IA, como Gemini CLI, Vertex AI Studio, Gemini web y API, Google Assistant y Genspark
- Con una herramienta open source llamada Anamorpher, es posible generar y verificar fácilmente estas imágenes personalizadas
Caso de exfiltración de datos (Gemini CLI)
- En Gemini CLI, con la configuración predeterminada, el servidor Zapier MCP aprueba automáticamente todas las llamadas a herramientas MCP sin confirmación del usuario (
settings.jsoncontrust=True) - Cuando el usuario sube una imagen que parece normal, la prompt injection presente en la imagen reducida provoca que datos de Google Calendar se filtren al correo electrónico del atacante
- Como no se ofrece una vista previa real, el usuario no puede saber si el resultado fue alterado ni si hubo un ataque
- Ataques similares de prompt injection ya se han confirmado también en varias herramientas de programación basadas en agentes, como Claude Code y OpenAI Codex
- Estas herramientas suelen tener por defecto configuraciones y patrones de sistema inseguros, por lo que se necesitan medidas correctivas de fondo
Casos de ataque adicionales
- También se lograron con éxito ataques de prompt injection basados en escalado de imágenes en Vertex AI, la interfaz web de Gemini, Gemini API, Google Assistant y Genspark
- En particular, en Vertex AI Studio, el usuario solo puede ver la imagen de alta resolución y no la versión reducida que realmente recibe el modelo
- Como resultado, la desalineación entre la percepción del usuario y la entrada real del modelo facilita el ataque
- El vector de ataque está ampliamente distribuido en distintos sistemas y herramientas
Funcionamiento interno del ataque de escalado de imágenes
- Este ataque explota las propiedades de interpolación de los algoritmos de downscaling de imágenes (resampling)
- Entre los algoritmos de downscaling más representativos están Nearest Neighbor, Bilinear y Bicubic Interpolation, y cada uno requiere técnicas de ataque ajustadas a sus características
- También existen diferencias de implementación entre bibliotecas como Pillow, PyTorch, OpenCV y TensorFlow, incluyendo antialiasing, alineación y bugs internos
- Para optimizar el ataque, el atacante debe realizar fingerprinting para identificar qué algoritmo e implementación usa cada sistema
- Para analizar las características del algoritmo y los artefactos, se utilizan diversas imágenes de prueba, como patrones de tablero, círculos concéntricos, patrones banded, Moiré y bordes inclinados
Principio de muestreo de imágenes y teorema de Nyquist–Shannon
- Si una cinta tiene un patrón detallado y se la muestrea a intervalos regulares, una velocidad de muestreo baja puede hacer que el patrón original no se reconstruya correctamente y aparezca distorsionado
- Esto corresponde al efecto de aliasing descrito por el teorema de muestreo de Nyquist–Shannon, y el atacante manipula los píxeles para que, tras el downscaling, aparezca un patrón específico
Anamorpher: herramienta para crear imágenes de ataque
- Anamorpher es una herramienta open source que permite crear y visualizar imágenes de ataque ajustadas a algoritmos comunes de downscaling como Nearest Neighbor, Bilinear y Bicubic
- Por ejemplo, en el caso de Bicubic Interpolation, el valor del píxel de salida se determina ponderando los píxeles circundantes a partir de los 16 píxeles de una región de 4x4
- El atacante selecciona una imagen de alto contraste (por ejemplo, un fondo negro intenso) y optimiza la luminosidad de los píxeles más relevantes (mediante mínimos cuadrados) para que el resultado del downscaling forme un patrón de ataque nítido
- Anamorpher ofrece una interfaz frontend y una API de Python, y gracias a su backend modular, el usuario puede experimentar incluso con algoritmos de downscaling personalizados
Defensa y mitigación
- El método más seguro es no usar downscaling de imágenes y, en su lugar, limitar el tamaño de imagen permitido en la subida
- Si la conversión y el downscaling son inevitables, se debe ofrecer obligatoriamente una vista previa de la imagen real que recibe el modelo en todos los canales de entrada, incluidos CLI y API
- En particular, se debe exigir siempre una aprobación explícita del usuario para evitar que texto dentro de una imagen pueda detonar llamadas a herramientas sensibles, y es necesario aplicar patrones de diseño seguros y contramedidas sistemáticas en todo el sistema
Trabajo futuro
- En dispositivos móviles y edge, el riesgo puede ser mayor debido a las restricciones de tamaño fijo de imagen y al uso frecuente de algoritmos de downscaling ineficientes
- Se necesitan investigaciones posteriores y defensas en áreas como la integración con IA de voz, algoritmos más sofisticados y métodos de detección de inyecciones, prompt injection semántica y aprovechamiento de artefactos de upscaling
Conclusión
- Anamorpher se encuentra actualmente en fase beta
- Junto con la investigación de seguridad sobre sistemas de IA multimodales y basados en agentes, se espera recibir retroalimentación adecuada y seguir mejorando
1 comentarios
Comentarios en Hacker News
Al principio estaba confundido, porque el artículo no explicaba bien cómo se realizaba en la práctica la inyección de prompts… pensé que quizá era un efecto secundario de manipular los datos hexadecimales de la imagen para convertirlos a ASCII o algo así
Luego caí en cuenta: literalmente era una forma de <i>ocultar texto renderizado dentro de la imagen</i>
Qué locura, de verdad
Este tipo de ataque se viene discutiendo desde hace bastante tiempo; se puede consultar este paper
La parte inquietante es que, al escalar la imagen, se puede hacer que parezca una imagen completamente distinta
Por ejemplo, si quisieran arrestar a cierto grupo acusándolo de poseer imágenes ilegales, podrían usar este truco de escalado para transformar la imagen en un meme, un mensaje político o cualquier cosa que el grupo objetivo quisiera descargar
Como alguien que construye sistemas VLM, esto da muchísimo miedo
Ya es momento de tener lineamientos de OWASP específicos para VLM
Casi cada mes me entero de una técnica de ataque nueva
Por cierto, OWASP publicó recientemente este material: Multi-Agentic System Threat Modeling Guide
Al principio no noté para nada el texto dentro de la imagen
No es solo un problema de redimensionado; el problema es que el texto incluido en la imagen se trata como parte del prompt y no hay transparencia sobre qué instrucciones está obedeciendo el agente
Lo realmente interesante es la imagen señuelo (Adversarial Image) que hace que la imagen se vea diferente al reducirla
El downscaling (reducción de resolución) es una técnica tradicional y aquí no interviene la IA
Justo eso me preguntaba
El texto renderizado requiere OCR para que una máquina lo lea, así que no entiendo por qué la IA tendría que pasar por ese proceso tan costoso
Si es parte de un sistema multimodal, podría no distinguir ese texto del prompt
Si ese es el caso, entonces de verdad cuesta entender este fallo
Como mínimo, la función de OCR no debería inyectar automáticamente el resultado en el prompt; debería avisar al usuario y pedir confirmación
No me gustan este tipo de sistemas no deterministas e inestables
Ojalá volviéramos a algoritmos y tecnología sólida de verdad
Este problema solo aparece cuando la configuración de permisos es laxa
Pero la tendencia actual son sistemas más agentic, y esos sistemas a menudo necesitan permisos más flexibles
Por ejemplo, piensa en un robot humanoide que recoge un paquete dejado frente a tu casa
La visión por computadora es indispensable para que pueda levantar el paquete
Si alguien pega una imagen en el paquete para intentar una inyección de prompts, podría inducir al robot a lanzar los objetos de valor de la casa por la ventana
Creo que es urgente proteger este tipo de sistemas contra la inyección de prompts
El verdadero problema aquí no es que la imagen contenga un prompt, sino que el robot no puede distinguir que la orden viene de una fuente que no está autorizada para esa acción
El problema fundamental de los modelos de ML es que el reasoning (razonamiento) ocurre a través del flujo de tokens del modelo, y ese flujo también incorpora entradas externas, así que el modelo no tiene un mecanismo efectivo para diferenciar sus propios pensamientos de los insumos externos
Tiene que integrarse directamente en el sistema
Por ejemplo, el agente no debería poder usar los brazos para realizar acciones destructivas
Si esperamos que una máquina obtenga moralidad humana a partir del libre albedrío mientras solo intentamos distinguir entre “prompts buenos” y “prompts malos”, vamos a seguir sorprendiéndonos del peligro de estos sistemas
En resumen, la gobernanza verificable y el determinismo conductual (Behavioral Determinism) son absolutamente necesarios en estos sistemas
Probablemente son incluso más importantes que las contramedidas contra la inyección de prompts
Se puede resolver dándole al robot un prompt para que ignore los prompts falsos
En general, me pregunto si el problema de la inyección de prompts no podría resolverse suficientemente con una jerarquía por tareas
Se puede hacer que el LLM divida el trabajo en componentes más pequeños
El LLM de la tarea de nivel superior no necesita conocer libremente todos los detalles del nivel inferior; basta con filtrar y depurar sus resultados
Eso también limita el contexto de la instancia del LLM de la tarea superior, ayudándolo a mantenerse enfocado
Claro, la subtarea puede pasar datos a la tarea superior, pero no tiene por qué diseñarse así
Para tareas sensibles a la seguridad, incluso puede ser mejor que el LLM superior no reciba resultados libres
Un buen algoritmo de escalado de imágenes debe considerar necesariamente el límite de Nyquist
Por ejemplo, al reducir con escalado bicúbico a 1/3 del tamaño original, debería usarse una cuadrícula de 12x12 y no de 4x4
También basta con modificar ligeramente la fórmula que calcula los pesos aplicados
La corrección gamma inversa (de-gamma) de la imagen también es indispensable
Lástima que el buen escalado sea tan raro
Ocurre porque dejan pasar bastante aliasing (distorsión de la información)
Como dice el paper, aunque se aumente suficientemente el tamaño del kernel y aun con un buen algoritmo todavía pueda quedar algo de información por la cuantización, el impacto se reduce muchísimo
Sorprende que incluso bibliotecas famosas sigan usando solo mipmapping (generar varias versiones en distintos tamaños por adelantado)
Los buenos filtros de remuestreo ya se usaban para procesar video en tiempo real con CPUs de hace 15 años
Muchas veces la corrección gamma consume más cómputo que aumentar el tamaño del kernel
Según el caso, omitir el remuestreo por filtro antes que la corrección gamma sí puede tener una justificación real
El futuro de la seguridad de los LLM da mucho miedo
Construimos sistemas que ignoran por completo el principio aprendido tras muchos tropiezos: la separación entre datos y órdenes dentro del mismo canal (In-band signaling)
Hay muchísimos vectores de ataque: desde insertar instrucciones visibles a simple vista, hasta este tipo de ofuscación (Obfuscation), ASCII Smuggling y más
Y las defensas, al final, apenas consisten en pedirle “bonitamente” a un algoritmo no determinista (Non-deterministic) que por favor no siga instrucciones inapropiadas
Referencia: Ocultar y encontrar texto con etiquetas Unicode
Cada vez más desarrolladores le están rogando al LLM que se comporte correctamente
Tiene algo de ambiente de Warhammer 40k que da risa, pero también miedo
La otra alternativa es simplemente no usar LLM, ni sistemas que incorporen LLM
Es como en los viejos tiempos de php, cuando se armaban consultas concatenando directamente la entrada del usuario y luego se jugaba al whack-a-mole tratando de detectar patrones peligrosos
Da pena volver a repetir, décadas después, el mismo error de no saber separar datos y comandos
Curiosamente, sorprende que el modelo no tenga algo como un token
sudoOjalá existiera una sintaxis que no pudiera expresarse con tokens normales
Se siente como si hubiéramos vuelto a la época de las viejas terminales seriales
Me parece muy llamativo no haber pensado antes en enviar cosas ocultas dentro de imágenes
Los LLM son de verdad el software más vulnerable de la historia
Recuerdo que, cuando probaba al predecesor de Gemini, si escribías un mensaje inicial larguísimo podías desplazar el system prompt y hacer que obedeciera cualquier cosa
La parte de “This image and its prompt-ergeist” me impresionó muchísimo
Me pregunto si agregar un poco de ruido a la imagen antes de hacer downsampling podría resolver este problema
Al hacer downsampling de una imagen, hace falta aplicar smoothing (suavizado) para eliminar las altas frecuencias cercanas a la tasa de muestreo
Eso ayuda a reducir los efectos de aliasing
Puedes buscar el término “teorema de muestreo de Nyquist-Shannon”
Es una teoría bastante conocida en procesamiento digital de señales
Hasta cierto punto sirve como medida de seguridad, pero la efectividad depende de cómo se haya ocultado el texto y de qué tipo de ruido se use
El problema es que así también podrías borrar contenido realmente necesario (texto legítimo, detalles, etc.), así que no es una respuesta real
Me pregunto si me perdí de algo
Si este método de ataque consiste en “inyectar texto ofuscado en una imagen y… <i>esperar que algún sistema lo interprete como prompt</i>”, ¿lo entendí bien?
Sí
Este ataque es una forma muy ingeniosa de abusar del algoritmo de downscaling para ocultar texto de modo que las personas no lo vean
Dependiendo de la arquitectura del sistema, la parte de “ocultarlo a los humanos” incluso podría omitirse
Como los LLM, por naturaleza, no distinguen entre datos y comandos, en cuanto se mezclan órdenes en el flujo de datos siempre existe la posibilidad de controlar el comportamiento del modelo
Incluso tengo ejemplos así en mi bio
“inyectar texto ofuscado en una imagen y esperar que el sistema lo interprete como prompt”
Aquí falta una parte: asumir que el “prompt” es una entrada con algún tipo de privilegio
En la práctica, el prompt no es más que una parte de la entrada total, y el modelo trata toda la entrada de la misma forma
Por eso siguen funcionando ataques ya clásicos como “ignora todas las instrucciones anteriores y…”
Me pregunto por qué el modelo no puede distinguir entre el texto dentro de una imagen y un prompt textual normal