1 puntos por GN⁺ 2025-08-22 | 1 comentarios | Compartir por WhatsApp
  • 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.json con trust=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

 
GN⁺ 2025-08-22
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

    • El problema es que, sea cual sea el LLM, el primero que recibe el prompt queda vulnerable a ataques de inyección de prompts
  • 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

    • Creo que buena parte de este problema surge por algoritmos de remuestreo de baja calidad
      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 sudo
      Ojalá 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?


    • 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

    • Tanto con texto dentro de imágenes como con prompts de texto comunes, el modelo puede caer fácilmente en las instrucciones del atacante