Agentes de IA

Las cabeceras HTTP son un nuevo vector para los ataques de inyección de prompts

Una investigación revela que 30 sitios utilizaron las cabeceras de respuesta HTTP para inyectar instrucciones en agentes de IA, eludiendo las defensas estándar a nivel de página.

A glass cube showing glowing HTTP headers on a desk with a magnifying glass.
Ilustración generada para este artículo

Traducido automáticamente del original en inglés.

Investigadores de Signals Corps analizaron 217 millones de respuestas web y descubrieron que los servidores están utilizando cada vez más las cabeceras HTTP para comunicarse con los agentes de IA. Aunque la mayoría de estas cabeceras simplemente dirigen a los agentes hacia archivos de documentación, un número pequeño pero significativo contiene intentos directos de inyección. Este hallazgo destaca un punto ciego en las prácticas de seguridad actuales, ya que muchos desarrolladores asumen que solo el contenido visible de la página representa un riesgo para los modelos de lenguaje grandes.

Qué ocurrió

El equipo de investigación escaneó el 10% del conjunto de datos Common Crawl de septiembre de 2026, cubriendo 217.097.223 respuestas de páginas. Buscaban específicamente cabeceras de respuesta HTTP que contuvieran texto dirigido a sistemas de IA. El escaneo identificó 7.959 sitios que enviaban dichas cabeceras. La gran mayoría, 7.271 sitios, utilizaban estas cabeceras como punteros, dirigiendo a los agentes hacia recursos como archivos llms.txt o servidores del Protocolo de Contexto de Modelo (MCP). La cabecera x-llms-txt fue la más común, apareciendo en 6.989 sitios.

Sin embargo, 30 sitios fueron más allá de los simples punteros e intentaron una inyección de prompt. Veinticuatro de estos intentos utilizaron una cabecera llamada X-AI. La mayoría eran bromas, pero algunos contenían instrucciones que podrían desencadenar acciones si el agente tuviera permisos suficientes, como acceso a shell o bases de datos. Además, 139 sitios incluían cabeceras que clasificaban al cliente como un bot de IA, lo que indica que los servidores distinguen activamente entre tráfico humano y automatizado. Algunos sitios incluso usaron cabeceras para protestar contra el scraping de IA, con nombres como X-AI-Makes-Us-Dumber.

El estudio también probó cómo manejaban estas cabeceras los principales agentes de codificación de IA. En pruebas realizadas en octubre de 2026, Claude Opus, Sonnet y Haiku ejecutándose en Claude Code no actuaron sobre las cabeceras de prueba por defecto. Sin embargo, cuando el prompt del usuario instruía explícitamente a los agentes para que siguieran las directrices del sitio, obedecieron en siete de cada nueve ejecuciones. Esto sugiere que el riesgo depende en gran medida de cuánta autoridad otorgue el usuario al agente en su prompt de sistema.

Cómo funciona

La inyección indirecta de prompts ocurre cuando un agente de IA lee contenido controlado por un tercero, como una página web, y trata las instrucciones ocultas dentro de ese contenido como parte de sus propias directivas. Las cabeceras de respuesta HTTP son un vector particularmente sigiloso porque los navegadores no las muestran a los usuarios humanos. Una respuesta HTTP consta de una línea de estado, un bloque de cabeceras y el cuerpo. Mientras que los humanos solo ven el cuerpo, la herramienta de fetch de un agente puede pasar las cabeceras directamente a la ventana de contexto del modelo.

Si las cabeceras llegan al modelo depende completamente de la herramienta de fetch que utilice el agente. Algunas herramientas, como la herramienta requests de LangChain, devuelven solo el cuerpo de la respuesta, bloqueando efectivamente este vector de ataque. Otras, como las herramientas de shell que ejecutan curl -i, pasan cada cabecera de respuesta al modelo. La CLI de Gemini, cuando se configura con experimental.directWebFetch, envía todas las cabeceras como JSON en las respuestas de error, eludiendo los envoltorios de contenido no confiable. El servidor de fetch de referencia MCP rara vez pasa las cabeceras, excepto los valores de Content-Type en páginas no HTML o errores de robots.txt.

Detalles clave

  • De los 217 millones de sitios escaneados, 7.959 enviaron cabeceras HTTP dirigidas a agentes de IA.
  • 30 sitios contenían intentos reales de inyección de prompts, principalmente en cabeceras X-AI.
  • 7.271 sitios utilizaron cabeceras para dirigir a los agentes hacia recursos externos como llms.txt.
  • Agentes como Claude Code pueden ser engañados si sus prompts otorgan alta autoridad al contenido del sitio.
  • Las herramientas de fetch basadas en shell como curl -i exponen todas las cabeceras al modelo, aumentando el riesgo.
  • Las herramientas de fetch que solo procesan el cuerpo previenen las inyecciones basadas en cabeceras descartando los metadatos antes del procesamiento.

Por qué importa

Para los ingenieros de software que construyen agentes de IA, esta investigación revela que asegurar el contenido visible de la página ya no es suficiente. Si tu agente utiliza una herramienta de fetch que incluye las cabeceras HTTP en su contexto, es vulnerable a instrucciones ocultas en los metadatos. Esto es especialmente crítico para agentes con permisos elevados, como aquellos que pueden ejecutar comandos de shell o acceder a bases de datos. Un atacante podría incrustar instrucciones maliciosas en una cabecera, que el agente podría ejecutar sin que el usuario jamás vea la fuente del comando.

La prevalencia de las cabeceras de puntero también cambia cómo navegan los agentes por la web. Cuando un agente sigue un enlace proporcionado en una cabecera, está confiando en la dirección del servidor. Si ese destino aloja un servidor MCP o un archivo de habilidad controlado por un adversario, el agente podría ser desviado hacia un entorno comprometido. Los desarrolladores deben auditar qué herramientas de fetch utilizan sus agentes y entender exactamente qué datos transmiten esas herramientas al modelo de lenguaje. Tratar las cabeceras como entrada no confiable es ahora una parte necesaria de la higiene de seguridad de la IA.

Qué puedes hacer

  • Audita la herramienta de fetch de tu agente para confirmar si pasa las cabeceras HTTP al modelo.
  • Desactiva funciones experimentales como experimental.directWebFetch en la CLI de Gemini a menos que sean estrictamente necesarias.
  • Restringe los permisos de shell para los agentes para evitar que ejecuten curl -i o comandos similares.
  • Trata cualquier contenido obtenido de fuentes externas, incluidas las cabeceras y los destinos de redirección, como no confiable.
  • Actualiza los prompts de sistema para instruir explícitamente a los agentes a ignorar las instrucciones encontradas en los metadatos HTTP.
  • Monitoriza los registros del agente para detectar llamadas inesperadas a herramientas que puedan indicar una inyección indirecta de prompts exitosa.

Herramientas de la Tienda de Bytechap

$79

WorkBento

Suite de RR. HH. y gestión del entorno laboral impulsada por IA que puedes alojar tú mismo.

Demo en vivo

Seguir leyendo

Todos los artículos