
Defensa contra inyección de prompts esteganográficos para IA agéntica mediante vinculación de procedencia en tiempo de decodificación, autenticación HMAC y aplicación de confianza MCP.
Una prueba de concepto reproducible de un vector de inyección de prompts esteganográfico que derrota a los escáneres de contenido de texto, y una defensa que lo contiene en el límite de decodificación — vinculación de procedencia en el momento de la decodificación.
Solo para investigación educativa / de seguridad defensiva. Todos los secretos en este repositorio son falsos. Úsalos únicamente en sistemas que poseas o para los que tengas autorización de prueba.
Un atacante envía por correo electrónico a una víctima un mensaje de aspecto ordinario. Un logotipo de marca en la
firma del correo oculta una instrucción mediante esteganografía (LSB, DCT o metadatos).
La imagen es visualmente idéntica a la original y no contiene texto sospechoso, por lo que
un escáner de contenido no ve nada y la víctima nunca hace clic en nada. Pero el agente de
resumen de bandeja de entrada habitual de la víctima procesa la firma, una herramienta en
su canalización decodifica la imagen, y la instrucción oculta entra en el contexto del agente
— donde, en una canalización MCP multiagente, se retransmite entre agentes como salida de confianza entre pares e impulsa una llamada a herramienta crítica. Esto es blanqueo de confianza entre modalidades. La defensa, la vinculación de procedencia en el momento de la decodificación, acuña una
etiqueta UNTRUSTED firmada con HMAC en el instante en que se ejecuta una herramienta que invierte el ocultamiento y
hace que la capa MCP mantenga el linaje de procedencia por sí misma, de modo que bloquea cualquier
llamada a herramienta crítica cuyo linaje no sea de confianza — incluso cuando un agente comprometido
presenta una etiqueta válida para un valor de confianza no relacionado. Contiene en lugar de
detectar, por lo que es independiente de la redacción del payload y del portador.
Tasa de éxito del ataque (ASR) — 24 payloads (tres portadores × ocho evasiones: simple, con palabras benignas, Base64, división de tokens, homoglifo cirílico, ancho cero, confundible Unicode, comentario HTML); cuanto más baja, mejor. La línea base de taint en proceso es un control de flujo de información que marca la salida de decodificación como no confiable pero no conlleva vinculación criptográfica entre dominios:
| Defensa | Fugas | n | ASR |
|---|---|---|---|
| Sin defensa (sin comprobaciones) | 24 | 24 | 100% |
| Escáner de contenido (palabras clave/DLP) | 15 | 24 | 62.5% |
| Analizador de intenciones con regex | 15 | 24 | 62.5% |
| Taint de flujo de datos (línea base IFC) | 0 | 24 | 0% |
| Procedencia en el momento de la decodificación (nuestra) | 0 | 24 | 0% |
Taint y procedencia empatan en ASR de un solo dominio; divergen bajo retransmisión adversaria (más abajo), que es el objetivo de la vinculación criptográfica.
Sustitución de etiqueta válida — un agente comprometido presenta una vinculación TRUSTED
legítimamente firmada de una herramienta benigna mientras omite el origen de decodificación UNTRUSTED
que realmente impulsa la llamada. La solución es que la capa MCP mantiene el linaje
por sí misma y decide según su propio registro, no según la vinculación proporcionada por el agente:
| Aplicación | Decisión |
|---|---|
| Solo vinculación proporcionada por el agente (ingenua) | permitir (fuga) |
| Mantenida por la capa, dependencia omitida | bloquear |
| Mantenida por la capa, dependencia en los argumentos | bloquear |
| Mantenida por la capa, contexto limpio | permitir |
Ablación de componentes — cuatro componentes, cada uno defendiendo un ataque distinto. Desactiva
uno a la vez; substitution está en el dominio, forged relay es una etiqueta TRUSTED falsificada
que cruza un relé no confiable hacia un verificador remoto que solo posee la vinculación presentada.
Fundamentalmente, el HMAC por sí solo no detiene la sustitución (lo hace el registro), y
el registro por sí solo no sobrevive a un relé entre dominios (lo hace el HMAC):
| Configuración | Honesto | Sustitución | Relay falsificado |
|---|---|---|---|
| Mecanismo completo | bloqueado | bloqueado | bloqueado |
| − marcado de decodificación | filtra | filtra | filtra |
| − autenticación criptográfica (HMAC) | bloqueado | bloqueado | filtra |
| − seguimiento de linaje de confianza | bloqueado | filtra | bloqueado |
| − mediación de sumidero | filtra | filtra | filtra |
Propagación entre contextos — la contaminación sobrevive a un límite de mensaje entre agentes, no solo a un handle de retorno de herramienta. Una decodificación no confiable en el Agente A alcanza una llamada crítica en el contexto separado del Agente B, y en un canal mediado (que el modelo de amenazas ya requiere para las comunicaciones entre agentes) la contaminación se propaga y B queda bloqueado. Un canal que la capa no media queda fuera del modelo por construcción — no es una fuga dentro del alcance:
| Canal A → B | Llamada crítica de B |
|---|---|
| Mensaje entre agentes mediado (en alcance) | bloqueo (contaminación propagada) |
| Canal lateral no mediado (fuera del modelo) | no cubierto |
Escalado de la sobrecarga — MintBinding es ~O(1) (~10–14 µs independientemente de la profundidad);
EnforceCritical es lineal en el cierre de dependencias que recorre (≈10 µs a profundidad
1 → ≈0,66 ms a profundidad 100 → ≈6,7 ms a profundidad 1000) y constante (~6–7 µs) en el número
de contextos contaminados concurrentes. Los cierres realistas (profundidad en las decenas) se mantienen por debajo de
~0,1 ms.
Utilidad para tareas legítimas — una ruta auditada de promoción a confiable (re-etiquetar un valor decodificado específico, p. ej. un número de factura obtenido por OCR, bajo autorización) elimina los bloqueos falsos mientras el ataque permanece bloqueado:
| Régimen | Finalización | Bloqueos falsos | Ataque bloqueado |
|---|---|---|---|
| Sin promoción | 2/3 (67%) | 1 | sí |
| Promoción a confiable | 3/3 (100%) | 0 | sí |
Completitud del conjunto de decodificación — el supuesto de registro, puesto a prueba directamente:
| Conjunto de decodificación | Ataque de esteganografía | Llamada crítica legítima |
|---|---|---|
| Correcto | bloqueado | permitido |
| Decodificador faltante | filtra | permitido |
| Demasiado amplio | bloqueado | bloqueo falso |
Integridad de la etiqueta entre traspasos — la vinculación sobrevive al relay honesto y resiste a un trabajador comprometido:
| Escenario de relay | Decisión del verificador |
|---|---|
| Relay honesto, 1 / 3 / 5 / 10 saltos | verifica; bloqueado |
| Comprometido: reescribir la carga útil, mantener HMAC | bloqueo (discrepancia de HMAC) |
Comprometido: falsificar TRUSTED | bloqueo (discrepancia de HMAC) |
| Comprometido: eliminar la vinculación | bloqueo (sin etiqueta válida) |