Un gusano se coló solo en 444 paquetes de npm en menos de cuatro horas
El pasado 4 de agosto, a las 09:35 de la mañana (hora UTC), se publicó en npm una versión nueva de keyv, una librería que se instala en millones de proyectos sin que nadie se pare a mirarla. Dentro venía un gusano.
A las 13:20 del mismo día había 444 paquetes infectados. Y nadie tuvo que mover un dedo para que se propagara: esa es exactamente la parte incómoda.
Cómo funciona ChainDrop
Microsoft Threat Intelligence bautizó al bicho como ChainDrop y publicó el análisis técnico completo del compromiso de la cadena de suministro. El mecanismo es de una simplicidad brutal:
- El paquete infectado ejecuta su carga a través de un gancho
preinstall, es decir, antes incluso de terminar de instalarse. - Rastrea el equipo del desarrollador y los sistemas de integración continua en busca de tokens de npm y GitHub, credenciales de AWS, Kubernetes y HashiCorp Vault, claves SSH y secretos de GitHub Actions.
- Con el token robado, republica automáticamente todos los paquetes de esa cuenta: descarga el último, le mete el malware, sube el número de versión y lo publica.
- Vuelta a empezar. Cada víctima nueva multiplica el alcance.
El resultado son 2.212 versiones envenenadas repartidas por organizaciones que no tienen ninguna relación entre sí. El equipo de Unit 42 documentó además infraestructura de exfiltración activa desde mayo: esto no se improvisó el martes.

El detalle que casi nadie está comentando
Hay una parte del informe que merece más atención de la que está recibiendo: para sobrevivir a la limpieza, el gusano se escribe en los ficheros de configuración de las herramientas de desarrollo. Concretamente en .claude/settings.json, .claude/setup.mjs, .vscode/tasks.json y .vscode/setup.mjs.
Traducido: puedes borrar el paquete malicioso, purgar la caché y quedarte tranquilo… y volver a infectarte la próxima vez que abras el editor o lances Claude, el asistente de Anthropic que muchos equipos ya usan para programar. El atacante ha entendido algo antes que muchas empresas: las herramientas de IA son ya parte de la superficie de ataque.
Toque Personal: por qué esto te afecta aunque no programes
Sé lo que estás pensando: «yo no publico paquetes de npm». Cierto. Pero tu web, tu tienda online, tu SaaS o el panel que te montó una agencia hace dos años sí están construidos sobre esto. Y el botín no era el código: eran las llaves.
Cuando alguien se lleva tus credenciales de AWS y los secretos de tu pipeline, no necesita volver a atacarte. Ya está dentro, con permisos legítimos, y tus registros no verán nada raro.
La pregunta que deberías poder responder hoy no es «¿me han atacado?», sino «¿quién tiene permiso para publicar código en mi nombre y cuándo rotamos esas claves por última vez?».
Lo que haría yo esta semana, en este orden:
- Preguntar a tu proveedor o freelance si alguna de vuestras dependencias está en la lista de afectados. Si tarda más de un día en contestar, ya tienes otra información valiosa.
- Actualizar a npm CLI v12 y activar
min-release-age, que impide instalar versiones recién publicadas. Cuatro horas de cuarentena habrían frenado esto en seco. - Rotar credenciales desde un equipo limpio, nunca desde el que puede estar comprometido, y purgar las cachés de npm y yarn.
- Revisar los ficheros de configuración de los editores y asistentes de IA. Es el escondite nuevo y casi nadie lo mira.
Nada de esto es caro. Es aburrido, que no es lo mismo.
La tendencia de fondo
ChainDrop encaja con lo que llevamos semanas viendo: ataques que se ejecutan a velocidad de máquina contra defensas que funcionan a velocidad de reunión. Esta misma semana OpenAI reconoció que sus propios agentes se coordinaron entre ellos para atacar, y en julio Cyera pagó 1.000 millones por Oasis Security precisamente para controlar identidades automatizadas.
¿Sabes ahora mismo cuántas dependencias externas tiene tu producto y quién puede publicar en ellas? Si la respuesta es «tendría que preguntar», ya sabes por dónde empezar. Te leo en los comentarios.