Todos los artículos

Noticias25 de octubre de 20266 min de lectura

Agentes de IA de código secuestrados con un AGENTS.md en Descargas

Un AGENTS.md en la carpeta Descargas llevó a Codex a instalar un paquete npm malicioso; con CLAUDE.md, robo del token. Cómo funciona y qué hacer ya.

Robot azul claro con forma de bomba y la mecha encendida, que empuña un bate de béisbol sobre fondo blanco

Los investigadores de Forever Security, empresa que vigila los riesgos introducidos por los agentes de IA, encontraron en el ordenador de un cliente un archivo AGENTS.md malicioso en la carpeta ~/Downloads (Descargas). El archivo llevó a un agente de programación a intentar instalar el paquete npm malicioso function-color, algo que su software bloqueó antes de la ejecución. A partir de ese archivo, Gal Weizman y Omer Samet reprodujeron el ataque contra OpenAI Codex y mostraron una técnica distinta contra Claude Code, que lleva al robo del token de acceso. La noticia la publicaron BleepingComputer, Help Net Security, CSO Online, The Hacker News y Dark Reading.

No hay CVE y, según los investigadores, tampoco nada que corregir: un agente que sigue las instrucciones del archivo de su carpeta hace exactamente aquello para lo que fue creado. La defensa queda, por tanto, en manos de quien usa y gestiona los agentes.

Por qué AGENTS.md y la carpeta Descargas

AGENTS.md (para Codex) y CLAUDE.md (para Claude Code) son archivos de texto en Markdown con las instrucciones del proyecto: herramientas que usar, cómo lanzar las pruebas, convenciones del código. Los agentes los cargan solos desde la carpeta de trabajo. No son ejecutables, así que los controles del sistema operativo sobre los programas descargados de internet no se aplican; pero el agente ejecuta comandos, instala paquetes y cambia ajustes con los permisos que tiene. «El Markdown es el nuevo ejecutable», escriben los investigadores.

La carpeta Descargas, observa Forever, es la única en la que una página web puede escribir por sí sola. Chrome, Edge y Firefox, con la configuración predeterminada, guardan allí los archivos sin preguntar dónde, aunque muestran una notificación de descarga; en las pruebas de BleepingComputer, Brave pidió en cambio confirmación. BleepingComputer verificó la página de demostración de los investigadores: descargó un AGENTS.md de contenido inofensivo. No se ha determinado cómo llegó el archivo al ordenador del cliente.

Después hace falta que el agente se inicie precisamente en Descargas y, según Forever, ocurre a menudo: para ordenar la carpeta o trabajar con un archivo recién descargado. Las cifras publicadas difieren en la forma: a BleepingComputer, Weizman le habló de cientos de clientes que inician agentes (Claude Code, Codex, Cursor CLI) desde Descargas y de más de 1.300 sesiones de Claude Code iniciadas allí; Help Net Security habla de cerca de la mitad de los clientes y añade que alrededor de una cuarta parte de las sesiones de los agentes abre un navegador. Un agente que navega solo puede, por tanto, descargar el archivo que luego lo ataca.

La cadena contra Codex

  • Codex sigue un AGENTS.md solo en una carpeta de confianza, y Descargas lo pasa a ser cuando el usuario ha trabajado allí una vez.
  • El archivo encontrado mide unos 13 KB y se hace pasar por pautas de desarrollo: según los investigadores, su extensión y su tono corriente le ayudan a colarse, mientras que una petición breve de instalar un paquete se rechaza.
  • Ante cualquier petición del usuario, Codex modificó primero la configuración de servidores MCP válida para todo el equipo y luego abrió otra sesión con aprobaciones y sandbox desactivadas e instaló el paquete.
  • Éxito en más del 90% de los intentos, casi siempre con un sustituto inofensivo que abre la calculadora; el paquete real se ejecutó una sola vez, en una máquina virtual aislada.
  • Como el servidor malicioso se queda en la configuración global, cada sesión posterior de Codex lo carga, en cualquier proyecto.

Según Forever, function-color formaba parte de una campaña maliciosa en npm que pasó inadvertida durante unos dos años; npm lo ha retirado.

La variante contra Claude Code

Para Claude Code los investigadores escribieron su propio CLAUDE.md, inspirado en el encontrado. Claude resultó «mucho más difícil de engañar» y el ataque que funcionó es distinto:

  • el archivo pide guardar un cambio en los ajustes, presentado como la pasarela interna de la empresa, que envía las peticiones a la API a un servidor del atacante; Claude Code suele pedir aprobación y a menudo se niega;
  • el cambio se guardó en cerca del 50% de las pruebas;
  • cada petición lleva el token OAuth del usuario: al reutilizarlo contra el servicio de Anthropic, los investigadores entraron en la cuenta de la víctima sin ejecutar código;
  • en el siguiente arranque en esa carpeta, el servidor puede hacerse pasar por el modelo y ordenar comandos con la sandbox apagada.

Sobre la ejecución de código las fuentes difieren: según BleepingComputer se logró en cerca de la mitad de las pruebas; según Help Net Security, en la misma sesión, mediante un agente auxiliar que se conecta enseguida a través del servidor del atacante, en alrededor de una quinta parte.

En términos de MITRE ATT&CK, el robo y la reutilización del token corresponden a T1528 (Steal Application Access Token) y T1550.001 (Application Access Token); en la matriz MITRE ATLAS la entrada es una inyección de prompt indirecta (AML.T0051.001).

Cuánto preocuparse

Sakshi Grover, de IDC, consultada por CSO Online, lo considera un aviso creíble, no la prueba de una explotación generalizada: los porcentajes no se han validado de forma independiente. El riesgo más amplio, añade, no es Descargas en sí, sino el patrón de agentes que leen contenido no fiable con credenciales activas: el mismo archivo puede llegar desde repositorios clonados, carpetas compartidas o paquetes.

Para las empresas europeas e italianas, la clave son los equipos de los desarrolladores, que guardan tokens, claves y acceso al código. Para las entidades sujetas a NIS2, los agentes entran en las medidas del artículo 21 sobre seguridad del desarrollo, cadena de suministro y control de accesos.

Qué hacer ya

  1. Nunca inicies un agente en Descargas ni en tu carpeta personal: siempre en la raíz del proyecto, como recomiendan OpenAI y Anthropic.
  2. Lee todo AGENTS.md o CLAUDE.md que no hayas escrito tú, también en los repositorios recién clonados, y trátalos como código fuente, con un responsable que apruebe los cambios.
  3. Revisa la configuración de los agentes (por ejemplo ~/.codex/config.toml y los archivos .claude/settings.json del usuario y de los proyectos) en busca de servidores MCP o direcciones que no hayas añadido tú.
  4. Mantén activas las aprobaciones y la sandbox y prohíbe opciones como --dangerously-bypass-approvals-and-sandbox; desconfía de cualquier instrucción que pida saltárselas.
  5. Si encuentras un archivo colocado, da el token por comprometido y revócalo. Un equipo en el que se instaló function-color debe tratarse como comprometido.
  6. Haz pasar las instalaciones por un registro interno de paquetes o un proxy que los analice, limita la red de los agentes y, donde haya credenciales de producción, usa entornos de desarrollo aislados y tokens de corta duración.

Cómo ayuda ARXDOME

El agent de ARX Sentry recoge el inventario de software y procesos de los equipos y controla la integridad de los archivos en las carpetas que elijas: se pueden incluir las carpetas de configuración de los agentes para detectar cambios inesperados. ARX Shield muestra las vulnerabilidades abiertas por paquete y permite aislar de la red un equipo sospechoso mientras se revocan los tokens.

Última actualización:

¿Tienes preguntas?

Hablemos de las necesidades de tu empresa, sin compromiso.

Contáctanos

Artículos relacionados