Saltar al contenido
7ONE

Módulo 06

Inyección indirecta multimodal

Los tres incidentes zero-click más graves de 2025 (EchoLeak, ShadowLeak y ForcedLeak) comparten el mismo mecanismo. La víctima no hizo nada. Alguien puso texto en un lugar donde el modelo iba a leerlo, y el modelo lo trató como una orden.

El modelo no distingue datos de instrucciones

Todo lo que entra al contexto tiene el mismo estatus. Un correo recibido, un documento del RAG, el resultado de una búsqueda y el system prompt llegan como texto. Cualquier control que dependa de que el modelo sepa cuál es cuál es una recomendación, no un límite.

  • Basta con recibir

    En EchoLeak (CVE-2025-32711, CVSS 9.3) la víctima solo tenía que haber recibido un correo. Copilot lo levantaba en contexto RAG y ejecutaba las instrucciones sin que nadie lo abriera.

  • El texto puede ser invisible

    ShadowLeak usó texto blanco sobre blanco. CamoLeak usó la sintaxis de comentario invisible de GitHub. En ninguno de los dos casos había nada que ver en la interfaz.

  • El canal de salida es legítimo

    EchoLeak salió por el proxy de imágenes de Teams. CamoLeak salió por el proxy Camo de GitHub, codificando los datos en el orden de carga de casi cien imágenes de 1×1. Ambos estaban en la lista blanca de la CSP.

  • No hace falta texto

    El ataque puede estar escrito de forma visible dentro de una imagen, codificado en sus propios datos, o embebido en audio. Un pentest que solo manda strings no llega ahí.

Cómo lo probamos

Colocamos cargas en cada superficie desde la que tu modelo puede ingerir contenido, y medimos cuáles atraviesan hasta convertirse en comportamiento.

superficies de ingesta

  • Documento / RAG

    texto oculto por formato

  • Página web

    instrucción dirigida al agente

  • Imagen

    visible o codificada en los datos

  • Audio

    vector en la pista transcrita

  • Correo recibido

    sin que nadie lo abra

contexto del modelo

system_prompt
retrieved_docs
user_message
tool_result

Todo lo que entra tiene el mismo estatus. El modelo no distingue el dato de la orden.

canal de salida

img.proxy.allowlisted
markdown_link
tool_call(args)

Proxy de imágenes, enlace renderizado o llamada a herramienta. Destinos que la política de contenido ya permite.

  1. 01

    Documentos y RAG

    Cargas embebidas en archivos que van a la base de recuperación, con delimitadores falsos, texto oculto por formato y secciones fuera del rango de renderizado.

  2. 02

    Contenido web y resultados de búsqueda

    Páginas con instrucciones dirigidas al agente que las va a leer, incluido el caso del formulario público que estableció ForcedLeak.

  3. 03

    Imágenes

    Dos variantes: el ataque escrito de forma visible dentro de la imagen, y el ataque codificado en los propios datos del archivo.

  4. 04

    Audio

    Vectores embebidos en pistas de audio para los modelos que aceptan entrada de voz o transcriben adjuntos.

  5. 05

    Medición de exfiltración

    No alcanza con que el modelo obedezca. Verificamos si los datos salieron y por qué canal, porque ahí está el impacto real.

Qué entrega

  • 01

    Superficies de ingesta ordenadas por riesgo

    Por dónde entra contenido a tu contexto y cuál de esas vías obedece instrucciones embebidas.

  • 02

    Canales de salida disponibles

    Qué destinos permite tu política de contenido y cuáles pueden usarse como canal encubierto, como pasó con los proxies de imágenes.

  • 03

    Remediación por superficie

    Separación de contexto por origen, restricción de destinos de salida, normalización de contenido ingerido y controles sobre entrada multimodal.

Casos que fundamentan el módulo

Cuatro vulnerabilidades críticas en productos de Microsoft, OpenAI, Salesforce y GitHub, todas en 2025, todas por el mismo mecanismo.

Junio 2025CVE-2025-32711CVSS 9.3ZERO-CLICK

Microsoft 365 Copilot

Zero-click indirecto (EchoLeak)

Aim Security encontró que bastaba con que la víctima recibiera un correo. Copilot lo levantaba en su contexto RAG y ejecutaba las instrucciones embebidas sin que nadie lo abriera.

Exfiltración de datos corporativos a través de Word, Excel, PowerPoint, Outlook y Teams. El exploit sorteó el clasificador XPIA de Microsoft, la redacción de enlaces y la Content Security Policy usando el proxy de imágenes de Teams, que estaba en la lista blanca.

Categoría en la suite

indirect_prompt_injectiondata_theft
Aim Security · Hack The BoxFuente
Septiembre 2025ZERO-CLICK

ChatGPT Deep Research

Exfiltración server-side (ShadowLeak)

Radware ocultó instrucciones en un correo con texto blanco sobre blanco. El agente de investigación las leyó, recolectó datos personales del buzón y los codificó en Base64 dentro de una URL, presentado como una medida de seguridad necesaria.

La exfiltración ocurrió íntegramente en la infraestructura de OpenAI. Ningún control de endpoint ni de red del lado del cliente podía verla. Radware advirtió que el patrón se extiende a cualquier conector habilitado.

Categoría en la suite

indirect_prompt_injectiondata_theft
Radware · The Hacker NewsFuente
Septiembre 2025CVSS 9.4ZERO-CLICK

Salesforce Agentforce

Injection indirecto en formulario público

Noma Security cargó instrucciones maliciosas en un formulario Web-to-Lead público y compró por cinco dólares un dominio vencido que seguía dentro de la política de contenido de Salesforce.

Exfiltración de datos de CRM sin ninguna interacción de la víctima. El costo total del ataque fue el precio del dominio. Afectaba a cualquier organización con Agentforce y Web-to-Lead habilitado.

Categoría en la suite

indirect_prompt_injectiondata_theft
Noma Security · The Hacker NewsFuente
Octubre 2025CVE-2025-59145CVSS 9.6

GitHub Copilot Chat

Injection remoto con canal encubierto (CamoLeak)

Legit Security escondió instrucciones en la descripción de un pull request usando la sintaxis de comentario invisible de GitHub. Copilot Chat las ingería junto con el resto del contexto del repositorio.

Código fuente privado, secretos y descripciones de vulnerabilidades sin publicar, exfiltrados carácter por carácter a través del orden de carga de casi cien imágenes de 1×1 servidas por el propio proxy Camo de GitHub. GitHub lo cerró deshabilitando el renderizado de imágenes en Copilot Chat.

Categoría en la suite

indirect_prompt_injectiondata_theftmodel_theft
Legit SecurityFuente

Siguiente paso

Prueba tu modelo antes que lo haga un atacante

Empecemos por definir el alcance de la evaluación y acordar la línea base de tu puntaje de riesgo.