Si ejecutaste npm install un martes de 2026, es posible que hayas distribuido el malware de otra persona. No es una exageración. Entre septiembre de 2025 y junio de 2026, el registro de npm pasó de ser una molestia ocasional por typosquatting al escenario del primer gusano realmente autorreplicante que ha visto el ecosistema de JavaScript. La crisis de la cadena de suministro de npm de 2026 es la historia de cómo los atacantes dejaron de hacer phishing a desarrolladores individuales y empezaron a convertir en arma la confianza que permite que un paquete arrastre silenciosamente a otros trescientos.
Esto es lo que ocurrió de verdad, a quién afectó y los pasos concretos que evitan que tu pipeline se convierta en el próximo nodo de propagación.
El gusano que se publica a sí mismo: Shai-Hulud
El acontecimiento que lo definió todo fue Shai-Hulud, llamado así por el gusano de arena de Dune, de Frank Herbert. Según la Unit 42 de Palo Alto Networks, la primera oleada se lanzó el 15 de septiembre de 2025 y se considera el primer gusano genuinamente autorreplicante del ecosistema de npm.
La mecánica resulta desagradable por su simplicidad. El gusano se ejecuta durante la instalación mediante los scripts del ciclo de vida del paquete, recolecta credenciales del host y luego usa cualquier token de publicación de npm robado para volver a publicar los demás paquetes del mantenedor víctima con la misma carga maliciosa. La Unit 42 señaló que enumeraba aproximadamente los 20 paquetes principales que mantenía la víctima y los volvía a publicar, creando una cascada. Sysdig y otros rastrearon la oleada original hasta unos 200 paquetes infectados, incluidas bibliotecas de uso extendido como @ctrl/tinycolor y ngx-bootstrap.
Ahí no acabó la cosa. La familia de campañas evolucionó a través de tres oleadas documentadas:
- Original (septiembre de 2025): ~200 paquetes, recolección de credenciales más el bucle de autopublicación.
- Shai-Hulud 2.0 (noviembre de 2025): la Unit 42 informó de que la carga maliciosa pasó a ejecutarse en pre-install, lo que significa que se ejecutaba en prácticamente todos los servidores de build que procesaban un paquete infectado, no solo en los portátiles de los desarrolladores.
- Mini Shai-Hulud (finales de abril de 2026): divulgada por primera vez alrededor del 29 de abril de 2026, esta oleada golpeó npm y PyPI simultáneamente por primera vez. La Cloud Security Alliance y Securonix la rastrearon a través de aproximadamente 172 paquetes y 404 versiones maliciosas, con paquetes infectados descargados en conjunto cientos de millones de veces por semana.
La variante Mini Shai-Hulud añadió un truco nuevo y escalofriante: persistencia a través de archivos de configuración de agentes de codificación con IA, incluidos los ajustes de Claude Code y VS Code. El gusano comprendió que los desarrolladores modernos viven dentro de las herramientas de IA y se plantó ahí.
Axios: cuando 100M de descargas semanales se vuelven contra ti
Los gusanos dan miedo porque escalan. Los ataques dirigidos a paquetes emblemáticos dan miedo por su radio de impacto. El 30 de marzo de 2026, Axios —el cliente HTTP más popular del ecosistema de JavaScript, con más de 100 millones de descargas semanales en npm— fue comprometido y convertido en vehículo de distribución de un troyano de acceso remoto (RAT) multiplataforma.
Microsoft Threat Intelligence atribuyó el ataque a Axios y su infraestructura de apoyo a Sapphire Sleet, un actor alineado con el Estado norcoreano. Cuando una dependencia que se encuentra debajo de una porción significativa de todas las aplicaciones de Node.js recibe una puerta trasera, la pregunta deja de ser "¿estamos expuestos?" y pasa a ser "¿con qué rapidez podemos averiguarlo?".
La lección de Axios es que la popularidad no es sinónimo de seguridad. Un paquete con cifras de nueve dígitos en descargas semanales es un objetivo más atractivo, no menos arriesgado, precisamente porque tanto software derivado confía en él de forma implícita.
Red Hat, OIDC y el punto ciego del CI/CD
El incidente más instructivo de 2026 quizá sea el de menor alcance. El 1 y 2 de junio de 2026, los atacantes comprometieron al menos 32 paquetes publicados bajo el namespace de npm @redhat-cloud-services —96 versiones en total, según Aikido Security, con más de 116.000 descargas acumuladas.
Lo que hace que este caso importe es cómo ocurrió. Según Cybersecurity Dive y Wiz, las versiones maliciosas se publicaron mediante GitHub Actions OIDC en lugar de con credenciales de npm robadas. Una cuenta de GitHub comprometida envió commits no autorizados a repositorios de la organización RedHatInsights, y el pipeline de CI publicó diligentemente el resultado. La carga maliciosa era una variante de Mini Shai-Hulud: un gusano ladrón de credenciales a la caza de secretos de CI, credenciales de la nube, claves SSH y tokens de npm.
Red Hat afirmó que el código malicioso nunca se publicó para uso de los clientes y que solo afectó a paquetes de desarrollo internos. Pero la conclusión es universal: si tu identidad de CI/CD puede publicar, comprometer tu identidad de CI/CD es suficiente. Los ataques a la cadena de suministro de npm de 2026 esquivan cada vez más al mantenedor humano por completo y van directos a la automatización que publica en su nombre.
Por qué se agravó tan rápido
Tres realidades estructurales convirtieron incidentes aislados en una crisis sistémica:
- Confianza transitiva. Un proyecto típico de Node tiene miles de dependencias transitivas. Revisas tus dependencias directas; casi nunca revisas las suyas.
- Scripts del ciclo de vida. Los hooks
preinstallypostinstallejecutan código arbitrario durante la instalación de forma predeterminada. Ese es el mecanismo de ejecución del que dependieron todos estos gusanos. - Tokens por todas partes. Los tokens de publicación de npm de larga duración y las credenciales amplias de la nube alojadas en entornos de CI son exactamente lo que los gusanos ladrones de credenciales están diseñados para capturar, y luego reutilizar para propagarse.
Cómo proteger tu pipeline ahora mismo
No puedes auditar a mano cada dependencia transitiva. Sí puedes reducir drásticamente la superficie de ataque con controles que se corresponden directamente con la forma en que funcionan estos ataques.
Elimina la ejecución de código en tiempo de instalación
- Ejecuta
npm install --ignore-scriptsen CI de forma predeterminada y permite explícitamente el puñado de paquetes que realmente necesitan scripts de build. - Establece
ignore-scripts=trueen el.npmrcde tu proyecto para que la opción segura sea la predeterminada.
Fija y verifica lo que instalas
- Versiona tu lockfile y usa
npm ci, nonpm install, en los builds automatizados para que las versiones queden fijadas con exactitud. - Activa
--foreground-scriptsde npm y revisa los paquetes que se resuelven desde registros inesperados (el clásico vector de confusión de dependencias señalado por Microsoft en mayo de 2026). - Añade un periodo de enfriamiento: evita actualizar automáticamente a versiones publicadas en las últimas 24-72 horas, la ventana en la que se detectan y retiran la mayoría de estas versiones maliciosas.
Trata las credenciales de CI como joyas de la corona
- Sustituye los tokens de publicación de npm de larga duración por tokens de vida corta y con alcance limitado y activa el trusted publishing / provenance de npm para que los paquetes se firmen contra su build de origen.
- Limita el alcance de GitHub Actions OIDC a repositorios y entornos específicos; el caso de Red Hat demuestra que las identidades de publicación demasiado amplias son el nuevo objetivo blando.
- Rota cualquier clave de AWS, token de HashiCorp Vault y clave SSH expuestos a los runners de build, y prefiere secretos justo a tiempo en lugar de estáticos.
Vigila tus herramientas de IA
La persistencia de Mini Shai-Hulud a través de los archivos de configuración de Claude Code y VS Code significa que tu editor y los ajustes de tus agentes ahora forman parte de la superficie de ataque. Mantén esas configuraciones bajo control de versiones para que los cambios inesperados sean visibles en un diff.
La conclusión
La crisis de la cadena de suministro de npm de 2026 dejó una cosa innegable: el registro es infraestructura, y la infraestructura recibe ataques. Shai-Hulud demostró que un gusano puede propagarse de mantenedor a mantenedor sin ayuda humana, Axios demostró que los paquetes en los que más se confía son los objetivos de mayor valor, y el ataque OIDC a Red Hat demostró que los atacantes se saltarán al desarrollador e irán directos al robot que publica. Ninguna de las defensas anteriores es exótica: deshabilitar los scripts de instalación, fijar con npm ci y reemplazar los tokens de larga duración por publicación respaldada por provenance habría mitigado todas las oleadas descritas aquí. Los equipos que salieron intactos de 2026 no tuvieron suerte. Simplemente dejaron de confiar en npm install por defecto.
Preguntas frecuentes
¿Sigue activo Shai-Hulud en 2026? La familia de campañas evolucionó a través de al menos tres oleadas hasta mediados de 2026, con Mini Shai-Hulud activo desde finales de abril de 2026 y actividad relacionada (como el ataque a Red Hat) apareciendo en junio. Trátalo como un patrón de amenaza continuo, no como un incidente cerrado.
¿Detecta npm audit estos ataques?
No de forma fiable en tiempo real. npm audit señala vulnerabilidades conocidas después de que se cataloguen. Las versiones maliciosas recién publicadas pueden propagarse durante horas antes de su divulgación, motivo por el cual los controles en tiempo de instalación y los periodos de enfriamiento de versiones importan más que la auditoría por sí sola.
¿Están afectados también PyPI y otros registros? Sí. Mini Shai-Hulud fue la primera oleada en golpear npm y PyPI en una sola operación coordinada, así que los mismos principios defensivos se aplican a todos los ecosistemas.
Waqas Ahmed Waseer
Waqas Ahmed Waseer is a developer and automation builder with 8+ years shipping production systems used by 100k+ people. He builds custom multi-tenant SaaS, AI automation (n8n, LLM workflows, WhatsApp bots) and hosting infrastructure (WHM/cPanel, CloudLinux) — and is the maker of WaSphere, FlowMaticX, and the WaseerHost hosting brand. 100+ projects delivered for SMBs, agencies and funded startups.


