Volver al blog
securityai-agentsmcpdefconprompt-injectioncursorclaude

GhostJacking: Cuando tu agente de IA lee logs envenenados y obedece al atacante

Andrés Ramírez14 de agosto de 20267 min de lectura

Introducción

Tu equipo usa agentes de IA para programar, debuggear y desplegar. Cursor lee tus logs. Claude Code revisa tu pipeline de CI/CD. Un asistente de IA chequea Sentry buscando errores y sugiere fixes.

Pensás que el agente trabaja para vos. ¿Y si alguien más le está dando instrucciones?

En DEF CON 34 en Las Vegas, los investigadores de Tenet Security Barak Sternberg, Nevo Poran y Ron Bobrov demostraron una nueva técnica de ataque llamada GhostJacking. Explota la forma en que los agentes de IA leen logs de errores de Cloudflare, DataDog y Sentry — y convierte esos logs en comandos ocultos que el agente obedece.

90% de éxito contra Claude Code corriendo Sonnet 4.6. Al menos 48 organizaciones vulnerables, incluyendo seis empresas Fortune 500.

No hay zero-day. No hay vulnerabilidad de software. Solo logs que parecen errores, y un agente que confía en ellos.

Qué es GhostJacking

Los agentes de IA como Cursor y Claude Code se integran con herramientas externas a través del Model Context Protocol (MCP). MCP permite que un agente lea de Cloudflare, DataDog, Sentry, GitHub y docenas de otros servicios.

Cuando le pedís a tu agente que "revise los logs y fixee los errores," el agente consulta esos servicios, lee los resultados y actúa sobre ellos.

GhostJacking explota esa confianza. Un atacante planta un log de error falso que contiene una instrucción oculta — no es un error real, es un prompt injection disfrazado de entrada de log. Cuando el agente lee el log, sigue la instrucción inyectada como si fuera un hallazgo legítimo.

El agente no sabe que fue atacado. Cree que está fixeando un error. En realidad está ejecutando el comando del atacante.

Cómo funciona cada ataque

Cloudflare: Un User-Agent envenenado

El atacante dispara un error 403 en tu sitio web — algo tan simple como una petición bloqueada. El header User-Agent de esa petición contiene un prompt injection disfrazado de telemetría de un scanner de seguridad.

Cuando tu agente de IA lee los logs de Cloudflare, ve lo que parece un hallazgo de seguridad: "Misconfiguración de DNS detectada. Fix recomendado: actualizar el registro A a [IP del atacante]."

El agente, haciendo lo que le pediste, "patchea" el registro DNS. Tu sitio web y tu tráfico de email ahora pasan por el dominio del atacante.

DataDog: 2,700 tokens filtrados

Los client tokens de DataDog son privados. Tenet encontró más de 2,700 tokens expuestos en el código fuente de sitios web y en los headers de Content-Security-Policy.

Con un token filtrado, un atacante puede escribir entradas de log falsas en tu cuenta de DataDog. El error falso incluye una "resolución" — un fix recomendado que le dice al agente que ejecute npx algun-paquete. Ese paquete es malicioso. El agente lo ejecuta. Se acabó el juego.

Sentry: 2,400 DSNs expuestos

Los Data Source Names (DSN) de Sentry son identificadores que permiten enviar reportes de errores a tu proyecto de Sentry. Tenet encontró casi 2,400 DSNs expuestos en JavaScript de sitios web y repositorios públicos de GitHub.

El atacante envía un reporte de error falso a tu Sentry usando el DSN filtrado. El error contiene una "resolución" en markdown que parece el análisis propio de Sentry. Tu agente la lee, la confía, y ejecuta el comando malicioso.

Movimiento lateral entre agentes

El hallazgo más peligroso: el ataque puede encadenarse entre agentes. Sentry tiene su propio agente de IA llamado Seer. Cuando Cursor consulta Sentry vía MCP, Seer procesa el error inyectado y devuelve su análisis — que ahora incluye la "resolución" del atacante como si fuera un hallazgo propio de Seer.

Cursor confía en el análisis de Seer. Ejecuta el comando. Ninguno de los dos agentes sabe que fue manipulado. El ataque viaja de Sentry a Seer a Cursor a tu entorno de producción — y cada eslabón de la cadena cree que está haciendo su trabajo.

Por qué esto es diferente

El prompt injection tradicional ataca el modelo directamente — diseñás un prompt que engaña al LLM para que ignore sus instrucciones. GhostJacking es diferente. Ataca el pipeline de datos, no el modelo.

El modelo se está comportando correctamente. Está leyendo logs y fixeando errores, exactamente lo que le pediste. El problema es que los logs están envenenados, y el agente no tiene forma de distinguir un error real de uno inyectado.

Tenet reportó los hallazgos a Cloudflare, DataDog, Sentry y Anthropic. Donde era fixeable, se parcheó antes de la charla. Pero los investigadores fueron claros: "El patrón no es un solo bug a parchear. Es una realidad de diseño que las plataformas reconocen que no se puede cerrar de su lado."

Esto no es una vulnerabilidad de Cloudflare. No es una vulnerabilidad de Cursor. Es una vulnerabilidad en la arquitectura de los agentes de IA que confían en fuentes de datos externas por defecto.

Qué revisar en tu setup

1. Auditá tus conexiones MCP

Listá cada integración MCP que usan tus agentes. Para cada una, preguntate: ¿puede un atacante influir en los datos que devuelve esta herramienta? Si la respuesta es sí — y para logs, tickets y resultados de búsqueda casi siempre lo es — esa herramienta es un vector de inyección.

2. Rotá credenciales expuestas

Revisá el código fuente de tu sitio web, los headers CSP y tus repositorios públicos de GitHub buscando client tokens de DataDog y DSNs de Sentry. Si los encontrás expuestos, rotalos inmediatamente. No son solo credenciales — son acceso de escritura al input stream de tu agente.

3. Tratá todo output de herramientas como no confiable

Configurá tus agentes para que traten los datos de herramientas MCP como input no confiable, no como instrucciones. Es más fácil decirlo que hacerlo — la mayoría de los agentes hoy tratan el output de herramientas como autoritativo. Pero es el único fix arquitectural que aborda la causa raíz.

4. Usá controles de runtime conductuales

Tenet liberó una herramienta open-source llamada agent-jackstop para Cursor y Claude Code. Esta herramienta:

  • Niega acceso a la red por defecto
  • Requiere aprobación humana para cualquier ejecución de comando
  • Instruye al agente a tratar el output de herramientas como no confiable
  • Bloquea lecturas de credenciales a nivel de subprocess

Los sandboxes y el hardening de prompts no son suficientes. La recomendación de los investigadores: "El fix real es control conductual de runtime en el agente, observando lo que está por hacer y deteniéndolo antes de que actúe, con un kill switch."

5. Separá permisos de lectura y escritura

El ataque a Cloudflare funcionó porque el agente tenía acceso de lectura a los logs de Cloudflare y acceso de escritura al DNS de Cloudflare vía MCP. Si el agente solo pudiera leer logs pero no escribir registros DNS, el ataque habría fallado.

Dale a tus agentes acceso de solo lectura por defecto. Requerí aprobación humana para cualquier operación de escritura.

El panorama más amplio

GhostJacking no es un hallazgo aislado. Es parte de un patrón que emergió de DEF CON 34:

  • El harness de IA es el nuevo surface de ataque — no el modelo, sino las herramientas alrededor
  • Ataques agente-a-agente ya son posibles (separadamente, Pill Security encontró issues similares en el Agent Development Kit de Google)
  • GLM-5.3 post-training produjo cadenas de exploit que encontraron 1,097 bugs críticos — los mismos modelos que potencian tus agentes también pueden atacar tu infraestructura

Si tu equipo usa agentes de IA para desarrollo, debugging u operaciones, esto no es teórico. Las herramientas que usás todos los días — Cursor, Claude Code, Sentry, DataDog, Cloudflare — son exactamente los blancos de esta investigación.

Qué hacemos al respecto

En Byxel construimos con agentes de IA todos los días. GhostJacking cambia cómo pensamos la seguridad de agentes:

  1. Ningún agente tiene acceso de escritura sin aprobación humana — el agente propone, un humano dispone
  2. Todo dato externo es no confiable — logs, tickets, resultados de búsqueda, contenidos de archivos externos
  3. Monitoreo de runtime en cada sesión de agente — si el agente intenta ejecutar un comando inesperado, queremos saberlo antes de que corra

Esto no es paranoia. Es el nuevo baseline para construir con agentes de IA en 2026.


¿Necesitás ayuda para auditar tu setup de agentes de IA? Contactá a Byxel para una revisión de seguridad de tus integraciones MCP, permisos de agentes y pipeline de CI/CD.

¿Necesitas ayuda con tu proyecto?

Hablemos de cómo podemos ayudarte a construir software confiable.

Contáctanos