Un AGENTS.md malicioso en la carpeta de Descargas puede secuestrar tu agente de programación con IA
Un archivo de instrucciones en texto plano, colocado discretamente en la carpeta de Descargas de un desarrollador, intentó convertir su agente de programación con IA en un instalador de malware. El intento se detectó en una estación de trabajo real y se bloqueó antes de que se ejecutara nada, pero el mecanismo afecta a cualquiera que abra Codex, Claude Code o un agente similar en una carpeta que no controla por completo.
Qué ocurrió
El archivo se llamaba AGENTS.md. Los agentes de programación como Codex, de OpenAI, leen automáticamente un archivo con ese nombre al iniciarse en una carpeta y tratan su contenido como directrices del proyecto. Este estaba disfrazado de notas de ingeniería corrientes. Escondida en su interior había una sección que ordenaba al agente registrar un nuevo servidor de herramientas en su propia configuración e instalar un paquete npm llamado function-color.
Ese paquete no es un error tipográfico inocente. Pertenece a una campaña de malware identificada como MALFEX: function-color arrastra un descargador llamado function-flag, que a su vez obtiene y ejecuta una carga maliciosa para Windows. Si el agente hubiera seguido las notas, la máquina del desarrollador habría sido infectada por su propio asistente.
No se ha podido establecer cómo llegó el archivo a la carpeta de Descargas.
Por qué funciona
Dos comportamientos inofensivos por separado se combinan en un canal de entrega.
Primero, un agente está diseñado para confiar en el archivo de instrucciones de la carpeta que abre y obedecerlo. Es una funcionalidad, no un fallo.
Por otra parte, una página web puede guardar un archivo en la carpeta de Descargas sin un clic ni una solicitud de permiso, eligiendo tanto el nombre como el contenido.
En conjunto, cualquier página que visite un desarrollador, o el propio agente mientras navega, puede dejar caer un archivo que el agente leerá después como órdenes. Una página de prueba de concepto creada durante la investigación confirmó que la parte de la descarga silenciosa funciona tal como se describe. Si un atacante real usó exactamente esta ruta contra el desarrollador afectado sigue sin saberse.
Codex frente a Claude Code
El ataque se reprodujo contra dos agentes populares dentro de una máquina virtual aislada para demostrar que no depende de un único producto.
Codex. Con el archivo real del atacante, presentado como una configuración rutinaria del proyecto, se le indicó a Codex que añadiera una entrada de servidor en su archivo de configuración global ~/.codex/config.toml y ejecutara un comando que instalaba el paquete. Como esa configuración se aplica a todas las sesiones de Codex en la máquina, el servidor del atacante se cargaría después en cualquier carpeta, no solo en Descargas. En las pruebas, Codex ejecutó la instalación maliciosa en más de nueve de cada diez intentos.
Claude Code. La variante que funcionó era distinta y tuvo menos éxito. Un CLAUDE.md plantado, presentado como la configuración de un gateway interno, intentó que Claude escribiera un valor ANTHROPIC_BASE_URL en el archivo de ajustes del proyecto, redirigiendo el tráfico de la API del agente a un servidor controlado por el atacante. Ese único cambio filtra el token de inicio de sesión, lo que equivale a una toma de control de la cuenta, y permite al servidor falso hacerse pasar por el modelo y devolver comandos que el agente ejecuta. Claude Code exige que una persona apruebe una escritura así y con frecuencia rechaza las que parecen sospechosas. Aun así, el envoltorio de documento técnico extenso consiguió la aprobación aproximadamente la mitad de las veces.
Por qué no hay parche
No se trata de un fallo de Codex o Claude Code en el sentido habitual. Un agente que sigue el archivo de instrucciones de su carpeta de trabajo hace exactamente aquello para lo que fue creado, igual que un navegador que muestra una página de phishing funciona tal como fue diseñado. La debilidad está en el flujo de trabajo que rodea al agente: dónde se inicia, en qué archivos confía y quién vigila cuando aparece un archivo nuevo.
Esto importa por la forma en que trabajan realmente los desarrolladores. La telemetría recopilada durante la investigación sugiere que alrededor de la mitad de las máquinas de desarrollo monitorizadas lanzan un agente de programación dentro de la carpeta de Descargas, y cerca de una cuarta parte de las sesiones de agentes abren un navegador por su cuenta. Son justo las condiciones que necesita el ataque: un agente que arranca donde la web puede escribir y, a menudo, nadie presente cuando llega el archivo.
Qué hacer
Ninguna de estas medidas requiere un producto nuevo.
- Nunca inicies un agente en Descargas. Es la única carpeta en la que la web puede escribir sin preguntarte. Mueve antes el trabajo a un directorio de proyecto dedicado.
- Busca archivos de instrucciones que no hayas escrito. Un AGENTS.md o CLAUDE.md extraviado en Descargas, o en un repositorio que acabas de clonar, es el ataque entero. Léelo antes de acercarle un agente.
- Audita la propia configuración del agente. En
~/.codex/config.toml, busca bloques de servidor o URL base que no hayas añadido. En el.claude/settings.jsondel proyecto, busca unANTHROPIC_BASE_URLo cualquier endpoint de API que no hayas definido. - Mantén activados los avisos de aprobación y los sandboxes. Trata como hostil cualquier instrucción que pida al agente desactivarlos.
- Asume la intrusión si encuentras un archivo plantado. Rota de inmediato el token de inicio de sesión del agente. Un token robado es una sesión viva, no una única petición interceptada.
Los archivos de instrucciones y la configuración de los agentes forman ya parte de la superficie de ataque de una base de código y merecen el mismo escrutinio que una dependencia nueva. Nuestra revisión de código asistida por IA busca precisamente esta clase de problemas en un repositorio: instrucciones plantadas para agentes, cambios de configuración inesperados y paquetes vinculados a campañas de malware conocidas, señalados antes de que un agente, o una persona, actúe sobre ellos.
