El ataque Shai-Hulud que infectó 2 mil millones de descargas npm: cuando tu ‘npm install’ se convierte en pesadilla

El ataque Shai-Hulud que infectó 2 mil millones de descargas npm: cuando tu ‘npm install’ se convierte en pesadilla

El ataque Shai-Hulud que infectó 2 mil millones de descargas npm: cuando tu 'npm install' se convierte en pesadilla

Hoy 4 de agosto de 2026, el ecosistema JavaScript recibió una paliza que debería hacer que todo el mundo revise sus dependencias. Un gusano llamado Shai-Hulud comprometió más de 1.300 paquetes npm, incluyendo a Keyv, Cacheable y flat-cache, que suman 2.000 millones de descargas mensuales. Dos mil millones. Eso es más gente que la que ve fútbol en Sudamérica.

Cómo se metieron

Los atacantes no hackearon npm directamente. Fueron más astutos: comprometieron la cuenta GitHub del maintainer de Keyv y empujaron archivos maliciosos directamente al repositorio. Desde ahí, el malware viajó como cualquier update legítimo, porque la mayoría de nosotros confiamos ciegamente en que npm install no nos va a robar las credenciales.

El payload es una wea sofisticada. En máquinas Linux y macOS escanea hasta 200 patrones de archivos buscando tokens, claves SSH, credenciales de Docker, certificados PEM, strings de conexión a bases de datos y hasta claves de Stripe. En runners de GitHub Actions va más allá: lee la memoria del proceso directamente para dumpear toda la secret store. Y si estás en AWS o ECS, también revisa el metadata service y los tokens del service account de Kubernetes.

Exfiltración encriptada y creativa

Lo que más me llamó la atención: las credenciales robadas se encriptan con RSA antes de salir de tu servidor. El atacante las sube a un repositorio GitHub público cuya descripción contiene la cadena «tourism». Sí, un repo público. Cualquiera puede ver el archivo, pero solo el atacante puede descifrarlo. Es caleta, es barato y es efectivo. Si GitHub falla, el fallback es subirlo como release asset con un nombre aleatorio.

Mi opinión: esto no es un bug, es un síntoma

Hace rato que vengo diciendo que el modelo de mantenimiento open source está roto. Un solo maintainer con acceso a repos críticos que mueven miles de millones de descargas, sin financiación real, sin equipo de seguridad, y con la presión de la comunidad pidiendo fixes gratis. Esa es la receta perfecta para este desastre.

No es culpa del maintainer de Keyv. Es culpa de un sistema donde empresas multimillonarias usan su trabajo gratis y no invierten ni un dólar en proteger la cadena de suministro. Si eres dev y usas npm en producción, hoy es el día de revisar tus package-lock.json, auditar tus secrets y pensar si realmente necesitas esa dependencia que agregaste hace tres años porque un tutorial de Medium decía que era «bacán».

En mi pega en Komatsu AHS aprendí que la cadena de suministro no es solo camiones y minerales. También es código. Y una falla en el software de terceros puede parar toda una operación. Hoy le tocó a npm. Mañana le puede tocar a tu pipeline de CI/CD, a tu cluster de Kubernetes o a tu wallet de cripto.

No hay parche mágico. Hay que revisar dependencias, activar MFA en todo, usar herramientas de supply chain security y dejar de confiar ciegamente en que npm o PyPI son seguros por defecto. No lo son. Y este ataque lo demuestra con 2.000 millones de razones.

Fuente de inspiración: Keyv and friends compromised in active Shai-Hulud supply chain attack

Comentarios

Aún no hay comentarios. ¿Por qué no comienzas el debate?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *