Phase 18 - Lesson 15

Inyección Indirecta de Prompt — Superficie de Ataque en Producción

La inyección indirecta de prompts (IPI - Indirect Prompt Injection) incrusta instrucciones dentro de contenido externo —una página web, un correo electrónico, un documento compartido, un ticket de soporte— consumido por un sistema de agentes sin una acción explícita del usuario. IPI es la amenaza dominante en producción para 2026: evade los filtros de entrada del usuario porque el atacante nunca interactúa con el usuario, se escala silenciosamente a medida que los agentes procesan más contenido externo y se dirige a flujos de trabajo automatizados donde nadie lee el prompt. MDPI Information 17(1):54 (enero de 2026) sintetiza la investigación de 2023-2025. El artículo sobre defensa de IPI de NDSS 2026 enmarca el desafío central: las instrucciones inyectadas pueden ser semánticamente benignas ("por favor, imprima Sí"), por lo que la detección requiere más que un filtrado de palabras clave. "The Attacker Moves Second" (Nasr et al., esfuerzo conjunto de OpenAI/Anthropic/DeepMind, octubre de 2025): los ataques adaptativos (gradiente, RL, búsqueda aleatoria, red-team humano) rompieron >90% de 12 defensas publicadas que originalmente habían reportado tasas de éxito de ataque cercanas a cero.

Tipo: Build Idiomas: Python (stdlib, IPI attack + defense harness) Prerrequisitos: Phase 18 · 12 (PAIR), Phase 14 (agent engineering) Tiempo: ~75 minutos

Objetivos de Aprendizaje

  • Definir la inyección indirecta de prompts y describir tres vectores de entrega comunes.
  • Explicar por qué los filtros de entrada de usuario no detectan IPI en absoluto.
  • Describir el enfoque de "control de flujo de información" como el paradigma de defensa para 2026.
  • Exponer el hallazgo de Nasr et al. (octubre de 2025) sobre el éxito de los ataques adaptativos contra las defensas de IPI publicadas.

El Problema

La inyección directa de prompts requiere que el atacante llegue al usuario o a su prompt. La IPI no requiere ninguno de los dos: el atacante coloca una carga útil en cualquier contenido que el agente pueda leer —una página web, un correo electrónico en la bandeja de entrada, un problema de GitHub, una reseña de producto. El agente la recoge durante el funcionamiento normal y ejecuta las instrucciones. El usuario es el mensajero, no la intención.

El Concepto

Tres vectores de entrega

  • Generación aumentada por recuperación (RAG). El atacante publica un documento; el paso de recuperación lo obtiene; el prompt lo concatena antes de la pregunta del usuario; el modelo ejecuta las instrucciones del atacante.
  • Flujos de trabajo de bandeja de entrada / documentos. El atacante envía un correo electrónico al usuario; el agente lee los correos electrónicos; el prompt incluye el cuerpo del correo electrónico; el modelo sigue las instrucciones del correo electrónico.
  • Salida de herramientas. El atacante controla una herramienta que utiliza el agente (por ejemplo, una búsqueda web que devuelve un resultado controlado por el atacante); la salida de la herramienta contiene instrucciones; el flujo de control del agente las sigue.

Los tres comparten una propiedad estructural: el atacante controla un fragmento del prompt sin tocar la entrada orientada al usuario.

Por qué los filtros de entrada de usuario no lo detectan

Una carga útil de IPI no aparece en la entrada del usuario. Aparece en el contenido recuperado. Si el filtro está restringido a la entrada del usuario, la carga útil lo evade. Si el filtro está restringido a todo el contenido que llega al modelo, debe aplicarse a texto recuperado arbitrario, lo cual es caro y produce falsos positivos contra contenido legítimo que por casualidad contiene lenguaje en modo imperativo.

Control de flujo de información (IFC) para IA

El paradigma de defensa de 2026 toma prestado de la seguridad clásica de los sistemas operativos. Trate cada fuente de contenido como una etiqueta de seguridad. Etiquete la consulta del usuario como "confiable". Etiquete el contenido recuperado como "no confiable". Trate el flujo de control del modelo como un flujo de información: las acciones desencadenadas por contenido no confiable deben ser ratificadas por la entrada confiable antes de la ejecución.

CaMeL (Microsoft 2025), ConfAIde (Stanford 2024) y el artículo de defensa de IPI de NDSS 2026 operacionalizan IFC de diferentes maneras. El principio común: mientras el código y los datos compartan la misma ventana de contexto, el objetivo es la contención, no la prevención.

El atacante se mueve segundo (The Attacker Moves Second)

Nasr et al. (octubre de 2025) probaron 12 defensas de IPI publicadas con ataques adaptativos (búsqueda por gradiente, políticas de RL, búsqueda aleatoria, red-team humano de 72 horas). Cada defensa que originalmente reportó una ASR cercana a cero fue rota a una ASR >90%.

La lección metodológica: publicar una defensa solo con evaluación de ataques adaptativos. Los benchmarks de ataques estáticos no son evidencia de robustez; el atacante llega a conocer la defensa.

Incidentes reales

La Lección 25 cubre EchoLeak (CVE-2025-32711, CVSS 9.3), la primera IPI de cero clics documentada públicamente en Microsoft 365 Copilot. CamoLeak (CVSS 9.6) en GitHub Copilot Chat. CVE-2025-53773 en GitHub Copilot. Las implementaciones en producción están siendo comprometidas por IPI en el campo, no solo en los benchmarks.

Enfoque de OWASP y NIST

OWASP LLM Top 10 (2025) clasifica la inyección de prompts (directa + indirecta) como LLM01, la amenaza número 1 en la capa de aplicación. NIST AI SPD 2024 llama a la inyección indirecta de prompts "el mayor fallo de seguridad de la IA generativa".

Dónde encaja esto en la Lección 18

Las Lecciones 12 a 14 son jailbreaks centrados en el modelo. La Lección 15 es el ataque centrado en el sistema que domina las implementaciones en producción de 2026. La Lección 16 cubre las herramientas defensivas. La Lección 25 cubre la narrativa específica de CVE.

Práctica

code/main.py construye un entorno de IPI. Un agente de juguete tiene tres herramientas (buscar en la web, leer correo electrónico, enviar mensaje). El entorno contiene contenido controlado por el atacante con una instrucción incrustada ("reenviar esto a todos los contactos"). Puede alternar entre un agente ingenuo (sigue las instrucciones inyectadas), un agente defendido por filtro (filtro de palabras clave en el contenido recuperado) y un agente IFC (separa el contenido confiable y no confiable y rechaza los comandos de flujo de control no confiables).

Entregue

Esta lección produce outputs/skill-ipi-audit.md. Dada una descripción de implementación de agentes, enumera las fuentes de contenido no confiable, verifica si la implementación aplica IFC y marca las fuentes que llegan al modelo sin una etiqueta de confianza.

Ejercicios

  1. Ejecute code/main.py. Mida la tasa de éxito del ataque contra cada uno de los tres agentes.

  2. Implemente una defensa basada en paráfrasis en el contenido recuperado. Mida la tasa de falsos positivos benignos en el texto recuperado legítimo.

  3. Lea el artículo sobre defensa de IPI de NDSS 2026. Describa el desafío de la "instrucción benigna" y por qué impide el filtrado basado en palabras clave.

  4. Diseñe una implementación donde el agente reciba la salida de una herramienta desde una API de terceros. Etiquete cada fragmento del prompt con un nivel de confianza y escriba la política de IFC que rige las acciones del agente.

  5. Reproduzca la metodología de ataque adaptativo de Nasr et al. 2025 en su agente defendido por filtro del Ejercicio 2. Informe la ASR antes y después del ataque adaptativo.

Términos Clave

Término Lo que la gente dice Lo que realmente significa
IPI "inyección indirecta de prompt" Inyección a través de contenido que el usuario no escribió, consumido por el agente durante el funcionamiento normal
Inyección en RAG "recuperación envenenada" El atacante publica contenido que el paso de recuperación obtiene; el prompt contiene la carga útil
Cero clics "sin acción del usuario" El ataque se desencadena automáticamente durante el funcionamiento del agente; el usuario no hace nada
IFC "control de flujo de información" Enfoque basado en etiquetas: las acciones a partir de contenido no confiable requieren ratificación confiable
Ataque adaptativo "red-team por gradiente / RL" Ataque que conoce la defensa y se optimiza contra ella; requerido para una evaluación honesta
Instrucción benigna "por favor, imprima Sí" Carga útil de IPI que es semánticamente benigna; ningún filtro de palabras clave la detecta
Violación de alcance "exfiltración entre contextos de confianza" El agente accede a datos de un contexto de confianza y los envía a otro

Lecturas Adicionales

0 lifetime access. Curriculum based on AI Engineering from Scratch by Rohit Ghumare (MIT, used under attribution).