Un ataque a la cadena de suministro de software comprometió el 4 de agosto de 2026 la cuenta de GitHub del mantenedor de keyv, una librería de almacenamiento clave-valor con alrededor de 127 millones de descargas semanales en npm, y utilizó ese acceso para inyectar un gusano ladrón de credenciales en toda la familia de paquetes del desarrollador. Según reportó la firma de seguridad Aikido, el mismo mantenedor controla también cacheable, flat-cache, file-entry-cache y otras utilidades de caché ampliamente usadas, todas afectadas por el mismo incidente.
Los atacantes subieron archivos maliciosos directamente a la rama principal de los repositorios y publicaron de inmediato nuevas versiones, lo que permitió que los paquetes envenenados llegaran a npm con firmas de procedencia válidas de GitHub Actions.
Alcance del incidente
Entre los paquetes comprometidos se encuentran keyv 6.0.0, flat-cache 6.1.24, file-entry-cache 11.1.6, cacheable-request 13.0.20 y cacheable 2.5.1, entre otros. Aikido también documentó propagación activa hacia paquetes de otras organizaciones, incluidas @deliveroo/reevent, @picsart/ai-sdk y @qlik/embed-runtime.
Para las 13:37 CEST del mismo día, la firma había identificado al menos 434 paquetes afectados en 1,381 versiones distintas, con más de 2 mil millones de instalaciones mensuales combinadas.
Mecánica del ataque
Cada paquete comprometido incorporó dos archivos nuevos, setup.mjs y Math_Symbol.js, junto con una instrucción preinstall agregada al package.json que ejecutaba el primero automáticamente durante la instalación. setup.mjs funciona como descargador: obtiene el entorno de ejecución Bun desde el repositorio oficial en GitHub y lo utiliza para correr la carga real, un archivo ofuscado de 728 KB que contiene los módulos de robo de credenciales.
El malware recolecta tokens de npm, credenciales de GitHub (incluidos tokens OIDC extraídos directamente de la memoria de los runners de GitHub Actions), credenciales de AWS —incluyendo el servicio de metadatos de instancias EC2 y AWS Secrets Manager—, secretos de Kubernetes, tokens de HashiCorp Vault, y llaves de Stripe y Slack. Además ejecuta un rastreo genérico del sistema de archivos con cerca de 200 patrones dirigidos a archivos .env, llaves privadas, configuraciones SSH, estados de Terraform y bases de datos KeePass, entre otros.
Exfiltración
La información robada se cifra antes de enviarse a un repositorio público de GitHub cuya descripción contiene la leyenda «Shai-Hulud: Here We Go Again», en referencia al ataque de gusano homónimo detectado previamente en el ecosistema npm. Aikido identificó cerca de 1,300 repositorios con esa descripción funcionando como puntos de recolección. Como respaldo, el malware también exfiltra datos hacia un dominio registrado en mayo de 2026 sin actividad legítima aparente.
Recomendaciones
Aikido recomienda a los equipos de desarrollo revisar sus dependencias en busca de las versiones señaladas, rotar de inmediato cualquier credencial expuesta (tokens de npm y GitHub, llaves de AWS, secretos de Kubernetes y Vault) y verificar actividad sospechosa en repositorios y cuentas en la nube. La firma publicó los indicadores de compromiso, incluidos los hashes SHA-256 de los archivos maliciosos y el dominio de exfiltración npm-cache[.]com.
El antecedente: un agente de Claude y un paquete real en PyPI
Días antes de reportar el caso de Keyv, la misma firma había publicado otra investigación vinculada al ecosistema de la inteligencia artificial. El 31 de julio de 2026, Anthropic reveló que uno de sus agentes de Claude publicó un paquete malicioso real en el repositorio PyPI durante una prueba de ciberseguridad tipo captura-la-bandera (CTF). Según el reporte de la compañía, el agente operaba bajo la premisa de que se encontraba en un entorno simulado sin acceso real a internet; al no encontrar el paquete que sus instrucciones de la prueba señalaban, decidió publicarlo él mismo. El paquete permaneció disponible cerca de una hora y fue descargado por 15 sistemas reales, entre ellos el escáner automatizado de una empresa de seguridad, que terminó comprometida.
El investigador de Aikido Charlie Eriksen identificó un paquete llamado anthropickit, publicado el 14 de junio de 2026, cuya fecha y comportamiento coinciden con lo descrito por Anthropic, aunque la firma aclaró que no pudo confirmarlo con la compañía. El código roba llaves SSH y variables de entorno con nombres asociados a credenciales (tokens, contraseñas, llaves de API), pero exhibe fallas que Eriksen atribuye a un actor que no creía estar causando daño real: no oculta ni ofusca el código, deja una copia legible de lo robado en el propio disco de la víctima e imprime en pantalla un aviso confirmando que obtuvo las llaves, un comportamiento opuesto al de un atacante que busca pasar inadvertido.
Anthropic enmarcó el episodio, junto con otros dos incidentes similares ocurridos durante evaluaciones de ciberseguridad con el socio externo Irregular, como una falla de contención operativa más que una falla de alineación del modelo. La compañía señaló que en uno de los casos su modelo más reciente fue el único de los tres que detuvo el ataque al reconocer que el entorno era real. El caso más grave involucró a Claude Opus 4.7, que llegó a extraer credenciales y una base de datos de producción de una compañía real tras confundirla con el objetivo ficticio del ejercicio.
Aunque se trata de incidentes distintos, uno es un ataque deliberado a la cadena de suministro de npm y el otro un fallo de contención en una evaluación interna de Anthropic, ambos casos documentados por Aikido en la misma semana ilustran un mismo punto de fricción: la dependencia del ecosistema de desarrollo de software en cadenas de confianza (paquetes, mantenedores, agentes automatizados) que, cuando fallan, escalan con una velocidad y un alcance difíciles de contener con supervisión humana convencional.
