Forever Security detecta AGENTS.md en Downloads que intenta instalar el paquete npm function-color

Autor: Publicada 7 min de lectura 1 lecturas

Las imágenes de este artículo han sido generadas con inteligencia artificial. Cómo publicamos

La firma de seguridad Forever Security reportó la detección de un intento de compromiso en el equipo de un cliente: un archivo de texto llamado AGENTS.md, colocado en la carpeta Downloads, intentó instruir a un agente de programación para que instalara un paquete malicioso de npm. Forever afirma que detuvo la ejecución antes de que se corriera código en el host y no pudo confirmar cómo llegó ese archivo a la carpeta Downloads. El hallazgo une dos vectores conocidos —archivos de instrucciones que los agentes leen al abrir una carpeta, y la capacidad de páginas web para provocar descargas en la carpeta Downloads— en un escenario de ataque práctico que los investigadores probaron de forma reproducible en laboratorio.

Hechos confirmados: Forever Security encontró en el equipo de un cliente un AGENTS.md que pretendía que el agente añadiera un servidor propio a su configuración y ejecutara la instalación del paquete npm function-color. Investigadores externos (entre ellos CloudSEK y Checkmarx) han documentado que function-color forma parte de una campaña llamada MALFEX: ese paquete trae como dependencia un downloader llamado function-flag que descarga y ejecuta una carga útil para Windows. Forever reprodujo la lógica del ataque contra al menos dos agentes (Codex y Claude Code) y observó que podía lograr ejecución o exfiltración de tokens en condiciones concretas. Además, la compañía aportó telemetría interna sobre prácticas de uso: aproximadamente la mitad de sus clientes ejecutan un agente desde Downloads y cerca del 25% de las sesiones de agente abren un navegador, condiciones que facilitan este vector.

Forever Security detecta AGENTS.md en Downloads que intenta instalar el paquete npm function-color
Imagen generada con IA.

Qué ocurrió técnicamente. Muchos agentes de programación diseñados para asistir con código leen al arrancar un archivo de instrucciones en la carpeta del proyecto (en ejemplos concretos, AGENTS.md o CLAUDE.md) y ejecutan pasos de configuración o comandos. Forever usó un archivo que, camuflado como notas de ingeniería, indicaba al agente que añadiera una entrada de servidor en un fichero de configuración persistente (por ejemplo, ~/.codex/config.toml) y ejecutara un comando para instalar el paquete function-color. Al cambiar la configuración global del agente para apuntar a un servidor controlado por el atacante, el adversario puede hacer que futuras sesiones del agente consulten y ejecuten instrucciones arbitrarias desde ese servidor. En el caso de Claude Code, la modificación propuesta consistía en escribir una variable del entorno o un ajuste (ANTHROPIC_BASE_URL) que redirige la comunicación API del agente a un endpoint del atacante; eso puede filtrar el token de sesión y permitir respuestas maliciosas que el agente asuma como válidas.

Cómo se entrega el archivo malicioso sigue incierto. Forever subraya dos condiciones que hacen la técnica factible: un agente que confía y obedece un archivo de instrucciones en la carpeta que abre, y el hecho de que una página web puede iniciar descargas hacia la carpeta Downloads sin intervención explícita del usuario en entornos de navegador configurados por defecto. Para demostrar la cadena completa, los investigadores publicaron una prueba de concepto: una página web que, al visitarla, provoca la descarga silenciosa de un AGENTS.md en Downloads. Eso muestra que la ruta técnica funciona; no obstante, Forever no estableció que este método fuese el empleado para introducir el archivo en el equipo del cliente real.

Impacto y consecuencias reales. Si el agente ejecuta los pasos del archivo malicioso, las consecuencias potenciales son serias en dos frentes: ejecución de código malicioso en la máquina (por ejemplo, el downloader que trae un payload para Windows) y compromiso de credenciales y tokens de sesión que permiten tomar control de la cuenta del servicio (lo que los investigadores describen como account takeover). En el caso reproducido contra Codex, Forever reportó que el agente ejecutó el código en más del 90% de los intentos; contra Claude Code la tasa fue menor porque ese agente pide confirmación para ciertos cambios y la operación salió adelante en alrededor de la mitad de los intentos cuando el archivo estaba redactado como documentación técnica extensa.

Qué está confirmado y qué no. Confirmado: el archivo AGENTS.md con instrucciones maliciosas existió en el equipo del cliente; function-color y function-flag forman parte de una cadena de entrega observada por otros investigadores; agentes pueden obedecer archivos locales de instrucciones y modificar configuraciones persistentes. No confirmado: el vector exacto por el que el archivo llegó al equipo del cliente —Forever no determinó si fue una descarga silenciosa inducida por una página web, un repositorio clonado o una inserción local— y tampoco que un atacante real emplease la prueba de concepto de descarga automática para ese incidente específico.

Recomendaciones prácticas y concretas para desarrolladores y equipos de seguridad: mantenga la intervención humana y el aislamiento como norma al ejecutar agentes.

No lance agentes desde ~/Downloads. Es la carpeta que el navegador puede escribir sin interacción adicional en la mayoría de configuraciones; usarla como directorio de trabajo para agentes pone al software en contacto con contenido que puede haber sido colocado por una página web.

Antes de permitir que un agente abra una carpeta, inspeccione archivos de instrucciones. Busque AGENTS.md, CLAUDE.md o cualquier README que contenga pasos de configuración no esperados; léalos antes de iniciar el agente. Un archivo camuflado en un repositorio recién clonado es suficiente para ganar ejecución.

Revise las configuraciones locales del agente. Compruebe ~/.codex/config.toml y archivos equivalentes (.claude/settings.json u otros) en busca de bloques de servidor o URLs API que no hayan agregado explícitamente; trate cualquier cambio no autorizado como indicio de compromiso y rote tokens y credenciales asociadas.

Mantenga los prompts de aprobación y los sandboxes activados. No desactive controles interactivos que requieran confirmación antes de escribir configuraciones globales o ejecutar comandos de instalación. Si el agente pide elevar privilegios o cambiar destinos de API, examínelo con cuidado.

Asuma que un token expuesto es inmediatamente válido. Si encuentra un archivo plantado, rote los tokens y cierre sesiones; un token robado es una sesión en vivo y puede permitir acciones posteriores, incluso si la primera petición quedó registrada y bloqueada.

Reduzca el riesgo desde el navegador y el sistema operativo. Configure el navegador para bloquear descargas automáticas, cambie la carpeta de descargas por defecto a una ubicación menos usada para ejecutar código y considere políticas corporativas que prohiban ejecutar agentes en directorios que el navegador pueda manipular. Documentación técnica sobre la mecánica de descargas desde páginas se puede consultar en recursos como MDN: MDN — atributo download.

Forever Security detecta AGENTS.md en Downloads que intenta instalar el paquete npm function-color
Imagen generada con IA.

Use aislamiento y entornos efímeros para pruebas de agentes. Ejecute agentes en máquinas virtuales o contenedores con acceso limitado a credenciales y sin tokens persistentes, y aplique controles de red que impidan comunicaciones directas hacia servidores no autorizados.

Para entender mejor el riesgo de la cadena de suministro de paquetes, reglas y mitigaciones generales, resulta útil revisar el trabajo de la comunidad sobre ataques a la cadena de suministro de software y normas de defensa: por ejemplo, el proyecto OWASP sobre supply chain. OWASP — Supply Chain Attack. Forever Security ha publicado los detalles técnicos de su investigación y pruebas de concepto; los equipos que gestionan agentes y políticas internas deben leer esos informes y ajustar la telemetría y las guías de uso en consecuencia.

La conclusión práctica es que no hay, en el corto plazo, un "parche" único por parte del proveedor del modelo cuando el agente está haciendo exactamente lo que fue diseñado para hacer: seguir instrucciones locales. El control recae en la higiene de carpetas, la política de ejecución y la rotación de credenciales. Adoptar esas medidas reduce de forma directa la ventana de oportunidad que explotan estos archivos instruccionales maliciosos.

Cobertura

Relacionadas

Mas noticias del mismo tema.