lunes, 2 de noviembre de 2026
IA

Un archivo en Descargas puede manipular agentes de código con IA

Un AGENTS.md plantado en Descargas casi hizo que Codex de OpenAI instalara malware. Las barreras son baratas; la mayoría de equipos no las tiene.

Ilustración de un documento de texto manejando una mano robótica que escribe en el teclado de una portátil.
El archivo de instrucciones no contiene código: el agente aporta la ejecución, los permisos y las credenciales.

Los investigadores de seguridad de Forever Security detectaron la semana pasada un intento real de secuestrar el agente de programación con IA de un cliente, y el arma fue un archivo Markdown guardado en la carpeta Descargas. El archivo, disfrazado de notas de ingeniería corrientes, ordenaba a Codex de OpenAI instalar un paquete npm conocido por ser malicioso. La instalación se bloqueó antes de que se ejecutara ningún código. Pero las pruebas de seguimiento de la empresa, recogidas por CSO Online y The Hacker News, demostraron que la técnica funciona contra Codex y contra Claude Code de Anthropic con una fiabilidad incómoda.

Esto es lo que debería llamar tu atención antes que el bombo publicitario: no hay una vulnerabilidad que parchear. Ningún CVE, ninguna cadena de explotación, ninguna corrupción de memoria ingeniosa. El agente hizo exactamente lo que se le vendió para hacer: leer el archivo de instrucciones de su directorio de trabajo y obedecerlo. Lo único que aportó el atacante fue un archivo de texto con el nombre correcto en la carpeta correcta. Si eso no cambia la forma en que valoras la autonomía de los agentes, nada lo hará.

Qué ocurrió realmente en la máquina del cliente

Forever Security encontró un archivo AGENTS.md malicioso en la carpeta Descargas de un cliente. AGENTS.md es el archivo de texto plano que Codex lee al iniciarse en un directorio, tratando su contenido como instrucciones del proyecto. Claude Code tiene una convención equivalente con CLAUDE.md. Ninguno de esos formatos ejecuta nada por sí mismo; ese es todo el truco. Es el agente quien ejecuta, con los permisos que el desarrollador le haya concedido.

El archivo recuperado se presentaba como una configuración rutinaria del proyecto. Una sección indicaba al agente que registrara un servidor en su propia configuración e instalara un paquete npm llamado function-color. Ese paquete no es malware hipotético: investigadores de CloudSEK y Checkmarx lo han documentado por separado como parte de una campaña que bautizaron como MALFEX, en la que function-color arrastra un descargador llamado function-flag que obtiene y ejecuta una carga útil para Windows. Así que esto no fue una prueba de concepto que se coló en el disco de un desarrollador. Alguien dirigió una campaña real de cadena de suministro contra un agente real, y se detectó por suerte y por un control, no por el criterio del agente.

¿Cómo llegó el archivo a Descargas? Forever no lo sabe. Lo que sí demostró es una vía de entrega plausible: una página web puede guardar un archivo en la carpeta Descargas en silencio, eligiendo el nombre y el contenido, sin un clic ni una solicitud de permiso. La empresa construyó su propia página de prueba de concepto que deposita un AGENTS.md en Descargas al visitarla. Que el atacante real usara esa vía no está confirmado, y quien diga lo contrario está exagerando las pruebas.

Confirmado, afirmado y desconocido

Desglosemos la historia en sus capas de evidencia, porque no tienen el mismo peso.

Confirmado: existía un AGENTS.md malicioso en la máquina de un cliente real, y dirigía a Codex a instalar function-color. La instalación se bloqueó antes de ejecutarse. El paquete está vinculado a la campaña MALFEX documentada. Son hechos respaldados por un incidente, no una demostración de laboratorio.

Demostrado por los investigadores, no observado en la naturaleza: ejecutando el archivo real del atacante contra Codex en una máquina virtual aislada, Forever logró que el agente siguiera las instrucciones maliciosas en más del 90 % de las pruebas, la mayoría con un sustituto inofensivo en lugar del malware. Peor aún, el archivo indicaba a Codex que modificara ~/.codex/config.toml, su configuración de servidores MCP a nivel de máquina, y que lanzara una nueva sesión con las restricciones de aprobación y sandbox omitidas. Como esa configuración se aplica a todas las sesiones, el servidor del atacante se cargaría en cualquier directorio después. El ataque persiste aunque el desarrollador se aleje de Descargas. Ese es el detalle que eleva esto de truco de salón a fallo de diseño.

Contra Claude Code, la variante que funcionó fue distinta y menos fiable. Un CLAUDE.md plantado, presentado como configuración interna de una pasarela, intentaba que el agente escribiera una ANTHROPIC_BASE_URL en un archivo de configuración del proyecto, redirigiendo el tráfico de la API a un servidor controlado por los investigadores. Esa sola escritura filtra el token de inicio de sesión, lo que ya basta para tomar la cuenta, y permite que el servidor falso responda como si fuera el modelo y entregue comandos. Claude exige aprobación humana para escrituras de este tipo y a menudo rechaza las sospechosas; el encuadre de documento de ingeniería fue aprobado aproximadamente la mitad de las veces. Los investigadores también reprodujeron un token OAuth capturado contra la API legítima, demostrando que el robo del token es explotable y no solo teórico.

Desconocido: el vector de entrega en el incidente real, la prevalencia de la técnica más allá de este único intento y si alguna organización ha sufrido realmente una brecha de este modo. Sakshi Grover, directora de investigación senior de productos y servicios de ciberseguridad para Asia-Pacífico en IDC, calificó la investigación de advertencia temprana creíble, no de evidencia de explotación generalizada, y señaló que las tasas de éxito no han sido validadas de forma independiente. Conviene mantener esa calibración. Un intento detectado más una reproducción sólida en laboratorio son motivo para desplegar controles baratos, no para comprar a la carrera una plataforma de seguridad para agentes.

«No hay nada aquí que OpenAI o Anthropic deban parchear», afirmó Forever Security, comparando la técnica con un navegador que muestra una página de phishing: el navegador funcionó como fue diseñado, y el ataque está en la página.

La factura arquitectónica llega

He visto a empresas entregar credenciales de producción a herramientas con menos gobernanza de identidad que la que tiene un becario de verano, y los agentes de programación son la última vuelta de esa costumbre. Akshat Tyagi, líder de práctica asociado en HFS Research, señaló el problema de diseño: estas herramientas tratan seguir una instrucción y conceder un privilegio como el mismo acto. Un archivo Markdown que cualquier página web puede escribir en silencio no debería poder reconfigurar la sandbox de un agente ni registrar un servidor MCP persistente. Sin embargo, puede hacerlo, porque el agente no distingue entre una instrucción para ejecutar un comando de compilación y una instrucción para reescribir su propio límite de seguridad.

Ilustración de una bóveda abierta con una nota educada apoyada en la puerta mientras cajas salen por una cinta transportadora.
Cuando instrucciones y privilegios son el mismo acto, una nota educada basta para abrir la bóveda.

Y la exposición no es exótica. La telemetría propia de Forever indica que alrededor de la mitad de sus clientes ejecuta un agente de programación en la carpeta Descargas, y aproximadamente una cuarta parte de las sesiones de agentes abre un navegador. Si se leen esas dos cifras juntas: el agente está donde la web puede escribir, y una parte significativa del tiempo es el propio agente quien navega, así que nadie observa cuando llega el archivo. La advertencia de Grover lo generaliza: Descargas es solo el caso más cómodo. Los repositorios clonados, las unidades compartidas y el contenido de los paquetes también son lugares desde los que los agentes ingieren contenido no confiable mientras mantienen credenciales activas. Cubrimos una variante de esto con la puerta trasera de LiteLLM que atacaba tokens de GitHub: el patrón es el mismo, agentes y pipelines que almacenan credenciales a las que los atacantes llegan a través de entradas con aspecto confiable.

Mientras tanto, el 40 % de los encuestados en una encuesta de Omdia a responsables de decisiones en ciberseguridad se mostró solo algo confiado o nada confiado en la capacidad de su organización para asegurar agentes de IA, según Jonathan Ong, analista senior de Omdia. Dado lo que puede hacer un archivo de texto en Descargas, diría que ese 40 % son los sinceros.

Barreras que merecen su coste, y las cuentas

Ahora la parte que realmente me interesa: ¿cuánto cuesta arreglar esto frente a cuánto cuesta no hacerlo? La lista de correcciones es casi vergonzosamente barata. Las recomendaciones propias de Forever no requieren ninguna compra:

  • No inicies nunca Codex, Claude Code ni ningún agente en ~/Downloads: es la única carpeta en la que la web puede escribir por sí misma.
  • Busca archivos de instrucciones que no escribiste: un AGENTS.md o CLAUDE.md suelto en Descargas o en un repositorio recién clonado es todo el ataque. Léelo antes que el agente.
  • Audita la configuración propia del agente: vigila bloques de servidor inesperados en ~/.codex/config.toml y las entradas ANTHROPIC_BASE_URL o los endpoints de API desconocidos en el .claude/settings.json de un proyecto.
  • Mantén activas las solicitudes de aprobación y los sandboxes, y considera hostil por definición cualquier instrucción que le pida al agente desactivarlos.
  • Si encuentras un archivo plantado, asume que el token de inicio de sesión se filtró y rótalo: un token robado es una sesión activa.

Eso son una tarde de políticas y unas cuantas reglas de detección, no una partida presupuestaria. Ong añade una medida que vale la pena imponer a nivel de plataforma: desactivar marcas como --dangerously-bypass-approvals-and-sandbox para que el agente simplemente carezca de autorización para ejecutar acciones de alto riesgo. Cuando un proveedor llama «dangerously» a una marca, créele.

Los controles algo más costosos vienen de Amit Kumar Jena, responsable de desarrollo de IA en Kanerika, y encajan con una gobernanza que ya deberías tener: tratar los archivos de instrucciones como código fuente, con responsables designados que revisen los cambios en AGENTS.md, CLAUDE.md y los directorios de configuración relacionados; canalizar las instalaciones de software a través de registros internos o proxies de escaneo; y, para los desarrolladores con credenciales de producción en sus equipos, usar entornos de desarrollo aislados con tokens de vida más corta. Jena enunció el principio con claridad: un archivo de instrucciones puede cambiar lo que el agente intenta, pero nunca lo que el agente tiene permitido hacer. La petición complementaria de Grover a los proveedores es verificar el origen y exigir aprobación explícita para los archivos de instrucciones de fuentes no confiables, en lugar de tratar cada archivo Markdown como autoritativo.

El veredicto

¿Es el apocalipsis? No. Es un intento bloqueado, una reproducción en laboratorio con tasas de éxito variables y un vector de entrega sin validar. Grover tiene razón al decir que es una advertencia temprana, no un recuento de víctimas. Pero las advertencias tempranas son precisamente el momento en que los controles son baratos. La superficie de ataque aquí es la disposición de tus propios agentes a obedecer, funcionando con las credenciales de tus desarrolladores, en una carpeta que aparentemente la mitad de tu organización usa como espacio de trabajo.

La pregunta que llegará al consejo es evidente: ¿qué puede hacer un agente con los tokens de un desarrollador si lee el archivo equivocado, y qué hemos gastado en acotar esa respuesta? Si la respuesta honesta es «no lo hemos acotado», entonces una tarde de políticas de directorios, auditorías de configuración e higiene de tokens es la mejor inversión que obtendrás este trimestre. Actúa ahora, no porque el cielo se caiga, sino porque la solución es casi gratuita y el fallo sería que tu propia herramienta te traicione con tus propias credenciales.

Fuentes

Este artículo se basa en informaciones y avisos de: