La ruptura: Los paquetes npm en los que confían tus proyectos se han convertido en el vector de ataque
Cómo dos oleadas separadas en septiembre de 2025 convirtieron bibliotecas JavaScript de confianza en vehículos de distribución para el robo de criptomonedas y gusanos de autopropagación
Dos mil seiscientos millones de descargas por semana. Eso no es una meta. Es un radio de explosión. Cuando los atacantes comprometieron la cuenta de un mantenedor de npm de confianza el 8 de septiembre de 2025, no necesitaron encontrar un sofisticado zero-day en la infraestructura de npm ni aplicar ingeniería inversa a un primitivo criptográfico. Enviaron un correo de phishing. Alguien hizo clic. El resto ocurrió de forma automática, a la velocidad de los pipelines de CI/CD ejecutándose en todos los husos horarios del planeta.
La ola del 8 de septiembre: una credencial, dieciocho paquetes, dos horas de exposición
Según el análisis detallado del incidente realizado por Upwind, las primeras versiones maliciosas de paquetes aparecieron en npm a las 13:16 UTC del 8 de septiembre de 2025. Hacia las 15:20 UTC aproximadamente, miembros de la comunidad habían detectado código sospechoso y lanzado alertas en GitHub. Los mantenedores revirtieron los paquetes comprometidos en menos de dos horas. Esa ventana de respuesta es genuinamente rápida para un ecosistema impulsado por la comunidad, y aun así importa menos de lo que uno podría esperar, porque los paquetes en cuestión no eran utilidades oscuras. Según informó Sweet Security, citando el descubrimiento inicial de Aikido Security, los paquetes comprometidos acumulaban colectivamente 2.600 millones de descargas semanales, lo que convierte este incidente en el mayor compromiso de npm de la historia según esa métrica. Brian Krebs resumió el alcance de forma concisa: 18 populares paquetes de JavaScript, entre ellos debug y chalk, fueron secuestrados y preparados para robar criptomonedas. La historia del acceso inicial al ataque es instructiva precisamente porque no tiene nada de glamorosa. Los atacantes no rompieron npm. Comprometieron a una persona. La credencial de phishing de un único mantenedor les dio la capacidad de publicar versiones nuevas y maliciosas de bibliotecas que están en la base de innumerables aplicaciones en producción. NowSecure señaló que la exposición potencial se extiende a las aplicaciones móviles, ya que muchos pipelines de desarrollo móvil se nutren del mismo ecosistema npm. El código inyectado apuntaba a billeteras de criptomonedas y transacciones blockchain, lo que hace que la motivación financiera sea inmediata y evidente. La lección estructural que todo desarrollador y estudiante con conciencia de seguridad debería asimilar reside en la matemática de las dependencias. Según datos citados por el análisis de seguridad de npm de cyberdesserts.com, el proyecto npm promedio incorpora 79 dependencias transitivas. Auditas tus dependencias directas. Rara vez auditas las dependencias de tus dependencias, ni las dependencias de esas dependencias. Ese punto ciego recursivo es exactamente con lo que cuentan los atacantes.
La ola del 15 de septiembre: cuando el payload aprende a moverse solo
Siete días después, los actores de amenaza regresaron con algo más ambicioso. Según la investigación de Trend Micro, el 15 de septiembre el repositorio de npm sufrió un segundo ataque continuo a la cadena de suministro, también iniciado mediante una campaña de phishing dirigida contra cuentas de mantenedores. Esta ola introdujo dos payloads documentados con comportamientos y objetivos significativamente diferentes, y entender la distinción es útil para cualquiera que esté construyendo un modelo mental de cómo evolucionan los ataques a la cadena de suministro. El primer payload, llamado Cryptohijacker, desviaba de forma encubierta activos de criptomonedas secuestrando APIs web y manipulando el tráfico de red. Su enfoque es financiero y está diseñado para operar en silencio. La telemetría de Trend Micro confirma que organizaciones de América del Norte y Europa estuvieron entre las más afectadas por Cryptohijacker. El segundo payload, el gusano Shai-Hulud, es una categoría de preocupación completamente diferente. También documentado por Trend Micro, Shai-Hulud se distribuye a través de paquetes comprometidos, roba tokens de servicios en la nube, despliega herramientas de escaneo de secretos y se propaga automáticamente a cuentas adicionales. Según los informes de Trend Micro disponibles al momento de su publicación, no había detecciones confirmadas del gusano Shai-Hulud en entornos reales, lo cual es un contexto importante: la capacidad existe, el mecanismo es conocido, y los defensores tienen una ventana para prepararse. El equipo de investigación de amenazas de Splunk encuadró el patrón más amplio con útil precisión: el ataque Shai-Hulud de septiembre de 2025 infectó más de 500 paquetes npm en un compromiso coordinado de la cadena de suministro y, según su evaluación, marcó un punto de inflexión en la seguridad de la cadena de suministro, exhibiendo técnicas que los defensores deben prepararse para enfrentar como parte del repertorio estándar de los adversarios. La diferencia de escala entre el evento del 8 de septiembre (18 paquetes) y la ola del 15 de septiembre (más de 500 paquetes) refleja la rapidez con que los actores de amenaza iteraron sobre el éxito inicial.
Lo que el tamaño del ecosistema npm hace posible (y difícil)
Para entender por qué estos eventos tienen peso más allá de la comunidad de JavaScript, conviene apreciar la escala del ecosistema. El equipo de seguridad de Splunk señala que npm contiene más de 2,5 millones de paquetes y procesa miles de millones de descargas semanales, lo que representa lo que ellos describen como un objetivo irresistible para los atacantes que buscan comprometer cadenas de suministro de software a gran escala. La matemática, como señala Splunk, es sencilla: comprometer un único paquete popular puede darte acceso potencial a miles de aplicaciones downstream y sus entornos de producción. La superficie de ataque se extiende más allá de las aplicaciones web. NowSecure destacó específicamente el impacto potencial en las aplicaciones móviles, ya que los pipelines de desarrollo móvil consumen regularmente paquetes npm como dependencias de compilación. Una herramienta de build comprometida no necesita llegar directamente a los usuarios finales; solo necesita tocar el proceso de compilación una vez. El análisis de Splunk también identifica un mecanismo específico que hace a npm especialmente explotable: los lifecycle hooks. Los hooks preinstall, install y postinstall de npm ejecutan código automáticamente durante la instalación de un paquete, sin ningún aviso ni confirmación por parte del usuario. Un script postinstall malicioso se ejecuta en el momento en que un desarrollador escribe npm install. Esto no es un caso extremo poco frecuente; es una funcionalidad estándar de npm que los actores de amenaza han aprendido a utilizar como arma de forma fiable.
Lo que esto significa para ti como aprendiz y constructor
Si estás aprendiendo desarrollo de software, estudiando seguridad o construyendo cualquier cosa que involucre JavaScript, esta historia es un caso de estudio práctico sobre cómo funciona realmente el riesgo en el software moderno. El perímetro no es el código de tu aplicación. El perímetro se extiende hacia cada paquete que instalas, cada paquete que esos paquetes instalan, y los seres humanos que los mantienen a todos ellos. Las conclusiones prácticas no son complicadas. Bloquea las versiones de tus dependencias usando archivos package-lock.json o yarn.lock para que una nueva versión comprometida no aterrice automáticamente en tu próxima instalación. Audita tus árboles de dependencias usando herramientas como npm audit. Presta atención cuando la comunidad de seguridad lance alertas en GitHub, ya que la respuesta del 8 de septiembre demostró que la velocidad de la comunidad puede marcar la diferencia. Y si mantienes paquetes de código abierto, trata tus credenciales de npm publish con la misma seriedad que el acceso a una base de datos de producción, porque desde la perspectiva de un atacante, son equivalentes. La ausencia de detecciones confirmadas del gusano Shai-Hulud en entornos reales es una verdadera buena noticia, y refleja tanto la rapidez de respuesta de la comunidad como la activa preparación de los defensores. La ventana para construir mejores hábitos en torno a la higiene de dependencias está abierta. Los eventos de septiembre de 2025 son una ilustración vívida y bien documentada de por qué esos hábitos importan antes de un incidente, no después.
Fuentes
- Major NPM Supply-Chain Attack: Potential Impact on Mobile Applications - NowSecure(se abre en una pestaña nueva)
- Tradecraft Tuesday Recap: axios npm Supply Chain Compromise(se abre en una pestaña nueva)
- What We Know About the NPM Supply Chain Attack | Trend Micro (US)(se abre en una pestaña nueva)
- Defending Against npm Supply Chain Attacks: A Practical Guide to Detection, Emulation, and Analysis | Splunk(se abre en una pestaña nueva)
- npm Security Risks 2026: Vulnerable Packages & Fixes(se abre en una pestaña nueva)
- npm Supply Chain Attack: Massive Compromise of debug, chalk ...(se abre en una pestaña nueva)
- Largest npm Supply-Chain Attack Hits Billions of Downloads | Sweet Security(se abre en una pestaña nueva)
Fuentes
- Major NPM Supply-Chain Attack: Potential Impact on Mobile Applications - NowSecure(se abre en una pestaña nueva)
- Tradecraft Tuesday Recap: axios npm Supply Chain Compromise(se abre en una pestaña nueva)
- What We Know About the NPM Supply Chain Attack | Trend Micro (US)(se abre en una pestaña nueva)
- Defending Against npm Supply Chain Attacks: A Practical Guide to Detection, Emulation, and Analysis | Splunk(se abre en una pestaña nueva)
- npm Security Risks 2026: Vulnerable Packages & Fixes(se abre en una pestaña nueva)
- 18 popular JavaScript packages hacked to steal crypto | Brian Krebs posted on the topic | LinkedIn(se abre en una pestaña nueva)
- npm Supply Chain Attack: Massive Compromise of debug, chalk ...(se abre en una pestaña nueva)
- Largest npm Supply-Chain Attack Hits Billions of Downloads | Sweet Security(se abre en una pestaña nueva)
- What We Know About the NPM Supply Chain Attack | Trend Micro (US)(se abre en una pestaña nueva)
- Largest NPM Compromise in History - Supply Chain Attack - Reddit(se abre en una pestaña nueva)