El gusano ChainDrop infecta 1,381 versiones de paquetes npm con 2,000 millones de descargas mensuales
Un gusano autopropagable derivado de Shai-Hulud comprometió al menos 868 paquetes npm publicados mediante flujos legítimos de GitHub Actions, con procedencia criptográfica válida.
Un gusano autopropagable identificado como ChainDrop, derivado de la familia Shai-Hulud, comprometió más de 1,300 versiones de paquetes en el registro npm. La firma de seguridad Aikido contabilizó al menos 868 paquetes distribuidos en 1,381 versiones, con un volumen combinado de 2,000 millones de descargas mensuales.
Cómo se propagó
El punto de entrada fue el compromiso de la cuenta de GitHub del mantenedor de Keyv, una biblioteca de caché ampliamente utilizada. Desde ahí el gusano alcanzó proyectos como Cacheable, flat-cache y file-entry-cache, además de paquetes vinculados a Deliveroo, Ornikar, OneReach, Picsart, Qlik y ServiceTitan.
El detalle técnico que distingue este incidente: las versiones envenenadas se construyeron a través de flujos de trabajo legítimos de GitHub Actions. Los artefactos resultantes llevaban por tanto atestación de procedencia criptográficamente válida, el mismo mecanismo que la industria promueve como garantía de integridad de la cadena de suministro de software.
Qué hace el payload
La carga combina un dropper llamado setup.mjs con un ladrón de información distribuido en los archivos Math_Symbol.js y math_init.js, ejecutados mediante un runtime de Bun descargado en el momento. El objetivo son credenciales: tokens de acceso personal de GitHub, tokens de npm, credenciales de AWS, secretos de Kubernetes, tokens de HashiCorp Vault y llaves de Stripe, Slack, Twilio, Azure y Google Cloud. La exfiltración va hacia un repositorio público de GitHub y hacia el dominio npm-cache[.]com.
Lectura de Tabuga Intelligence
La atestación de procedencia se diseñó para responder una pregunta: ¿este binario salió realmente del repositorio que dice? ChainDrop responde que sí, y aun así es malicioso. El compromiso ocurrió aguas arriba, en la cuenta del mantenedor, de modo que la firma certifica un proceso de construcción que fue legítimo en su ejecución y envenenado en su insumo.
Para los equipos de desarrollo de la región esto reordena prioridades. La verificación de firma sigue siendo necesaria y deja de ser suficiente. El control que sí discrimina es el análisis de comportamiento en tiempo de instalación — detectar que un paquete de caché descarga un runtime alterno y abre conexiones salientes — junto con la rotación disciplinada de credenciales y el uso de tokens de corta vida en los pipelines de CI.
La segunda lección es de inventario. Muchas organizaciones dominicanas no saben cuántos de sus proyectos dependen transitivamente de Keyv o de flat-cache, porque la dependencia entra tres o cuatro niveles abajo. Un software bill of materials actualizado convierte esa pregunta en una consulta de segundos.