Compromiso masivo de paquetes npm de día cero: ataque a la cadena de suministro Shai-Hulud
15 de septiembre de 2025
0 minutos de lecturaEste incidente sigue en curso y compartiremos actualizaciones a medida que se confirme más información.
Identifica cómo pudo afectarte este ataque con el informe destacado de Zero Day de Snyk.

TL;DR (17 de sep. de 2025)
El ataque, que comenzó alrededor del 15 de septiembre de 2025 y se conoció como “Shai-Hulud”, ahora se identifica como un malware similar a un gusano que se propaga a través de cientos de paquetes npm comprometidos. El ataque busca robar y exfiltrar credenciales de nube, claves de API y otros secretos almacenados en disco, y transmitirlos mediante un webhook y repositorios públicos de GitHub. También apunta a entornos de CI/CD y usa GitHub Actions para exfiltrar datos y mantener el ataque.
Actualización (16 de sep. de 2025)
El equipo de investigación de seguridad de Snyk está al tanto de este ataque a la cadena de suministro en curso y está investigando, analizando y recopilando activamente información sobre las amenazas y los riesgos derivados de este ataque prolongado a paquetes npm comprometidos. Te recomendamos consultar los hallazgos de los productos de Snyk como fuente actualizada.
Actualización inicial (15 de sep. de 2025)
El 15 de septiembre de 2025, se publicaron varias versiones maliciosas de los paquetes npm ngx-bootstrap y ng2-file-upload, que se retiraron poco después. Esas versiones incluían un postinstall script (bundle.js) que intentaba recopilar tokens de desarrolladores (p. ej., de npm, GitHub y credenciales de nube) y exfiltrar secretos. Considera totalmente comprometido cualquier sistema donde se hayan instalado estas versiones: elimina el paquete, rota todos los secretos desde otra máquina confiable e investiga si hubo movimiento lateral. GitHub publicó avisos de malware para ngx-bootstrap y ng2-file-upload; no hay versiones corregidas de las compilaciones alteradas porque se eliminaron.
Desde los hallazgos iniciales sobre ngx-bootstrap, también se han detectado señales de malware en el paquete npm @ctrl/tinycolor, que se descarga más de 2 millones de veces por semana, y en otros paquetes npm de los espacios de nombres @ctrl y @nativescript-community, además de otros paquetes individuales.
Qué es ngx-bootstrap y por qué es importante
ngx-bootstrap es una popular biblioteca de componentes de Angular que integra componentes de interfaz de usuario de Bootstrap en aplicaciones de Angular. Se usa ampliamente en proyectos de frontend, compilaciones de CI y equipos de desarrolladores, por lo que un script de instalación malicioso puede ejecutarse durante un npm install rutinario y acceder a los equipos de desarrolladores y las credenciales locales. El repositorio oficial está a cargo de Valor Software.
Lo que sabemos hasta ahora
Es probable que haya cientos de paquetes afectados
El ataque avanzó y comprometió otros paquetes además de ngx-bootstrap y @ctrl/tinycolor. También incluye más espacios de nombres de organizaciones, como paquetes de la empresa de ciberseguridad Crowdstrike en el espacio de nombres npm @crowdstrike, entre otros.
La siguiente lista no pretende ser exhaustiva, sino servir de referencia. Siempre recomendamos consultar los productos, los resultados de análisis y los informes de Snyk para obtener una lista completa y actualizada de todos los paquetes y versiones maliciosos.
Puedes encontrar más paquetes afectados en nuestra página de paquetes comprometidos de la Base de datos de vulnerabilidades.
Paquete y versiones de ngx-bootstrap afectados
Informes de la comunidad documentaron que las siguientes versiones de ngx-bootstrap contenían el hook malicioso postinstall, que ejecutaba bundle.js:
20.0.4, 20.0.5, 20.0.619.0.318.1.4
Además, según los informes, 20.0.3 contenía bundle.js, pero sin una declaración postinstall. El mismo informe señala que las versiones afectadas se retiraron de npm poco después de su detección.
Nota: Al momento de redactar este artículo, la página del paquete en npm solo muestra las versiones actuales no afectadas; las maliciosas se despublicaron.
Los informes de la comunidad también señalaron que ng2-file-upload “parecía estar afectado”, pero hay pocos detalles. Mantente al tanto de los árboles de dependencias que incluyan paquetes de Valor Software y valida las versiones instaladas.
Cronología (UTC)
2025-09-15 — Se publica un informe de la comunidad en
valor-software/ngx-bootstrapque identificapostinstall/bundle.jsmalicioso en las nuevas versiones; menciona intentos de exfiltración de tokens y que las versiones afectadas se retiraron de npm.2025-09-15 — La base de datos de avisos de GitHub publica GHSA-6m4g-vm7c-f8w6 para
ngx-bootstrap(“Malware”), con instrucciones para considerar comprometidos los equipos donde se haya instalado.
(Actualizaremos esta información cuando surjan nuevos hechos verificables de los encargados del mantenimiento o los registros de paquetes.)
Evaluación del impacto
¿Quiénes están afectados? Desarrolladores, agentes de CI y endpoints que instalaron alguna de las versiones enumeradas o las descargaron como dependencias transitivas durante el período en que estuvieron disponibles.
¿Qué podría quedar expuesto? Secretos y tokens del entorno de desarrollo (npm, GitHub) y, posiblemente, credenciales de nube (AWS/GCP/etc.), según el comportamiento descrito en
bundle.js.También se atribuye un indicador de compromiso (IoC) a un nuevo flujo de trabajo de GitHub Actions llamado
shai-hulud, creado por el malware.Gravedad: Crítica (ejecución de código malicioso durante la instalación; robo y exfiltración de credenciales). El aviso de GitHub indica explícitamente que se debe responder a un compromiso total.
¿Cómo detectar malware de día cero en npm con Snyk?
Snyk incluye un informe de Zero Day en el panel de la aplicación Snyk, llamado Shai-Hulud npm supply chain attack - Sep 2025.
Si tienes un plan Enterprise, puedes usar esta vista para filtrar el informe y seleccionar el ataque de malware de día cero de npm que corresponda o los CVE específicos que quieras rastrear. Así obtendrás una vista del impacto en todo el sistema para estas dependencias de tinycolor, ngx-bootstrap u otras, en tus aplicaciones y repositorios de código monitoreados.

Guía de detección y clasificación
Identifica rápidamente la exposición
Comprueba si tu entorno descargó versiones afectadas:
npm ls ngx-bootstrap(por proyecto)Revisa los archivos de bloqueo (
package-lock.json,pnpm-lock.yaml,yarn.lock) en busca dengx-bootstrap@18.1.4,19.0.3,20.0.4–20.0.6y toma nota de las instalaciones realizadas a partir del 2025-09-15.
Revisa
node_modules/ngx-bootstrap/package.jsonpara buscar una entradapostinstally busca un archivobundle.jsen la raíz del paquete si mantienes archivos o cachés de proveedores.
Detén la ejecución de scripts durante la respuesta al incidente
Reinstala con los scripts desactivados para evitar que se ejecuten otros hooks del ciclo de vida:
npm ci --ignore-scriptsonpm install --ignore-scriptsTambién puedes establecer
ignore-scripts=trueen.npmrc
Revisiones forenses
Revisa las conexiones salientes de los agentes de compilación y los equipos de desarrolladores durante los períodos de instalación.
Audita GitHub (listas de tokens de acceso, registros de seguridad recientes), los tokens de npm y el uso de credenciales de proveedores de nube para detectar anomalías. Audita GitHub Actions.
Según las instrucciones del aviso de GitHub, considera comprometido cualquier equipo donde se haya instalado una versión afectada.
Contención y corrección inmediatas
Elimina las versiones afectadas
Elimina
node_modulesy los archivos de bloqueo que hagan referencia a versiones maliciosas; vuelve a instalar versiones fijadas y confiables.Limpia los registros privados, las cachés y los artefactos que aún puedan contener los archivos tar maliciosos.
Rota los secretos desde una máquina limpia
GitHub: revoca los tokens de acceso personal y las claves SSH; rota los tokens de alcance granular y revisa las autorizaciones de aplicaciones y dispositivos OAuth.
npm: revoca los tokens del registro.
Nubes (AWS/GCP/etc.): rota las claves de acceso y las claves de cuentas de servicio, e invalida las credenciales de larga duración.
Vuelve a compilar e implementar
Después de rotar las credenciales, vuelve a compilar desde entornos limpios con los scripts del ciclo de vida desactivados inicialmente; luego, vuelve a activarlos según sea necesario.
Comunicación con usuarios y organizaciones
Si distribuyes software compilado durante ese período, avisa a los equipos que dependen de él y recomienda actualizarlo o volver a compilarlo.
Sobre los ataques a la seguridad de la cadena de suministro
Este incidente se suma a otros incidentes de seguridad recientes de este tipo. Ya hemos visto ataques a CI y a cuentas de responsables de mantenimiento que permitieron secuestrar versiones:
Compromiso de los responsables de mantenimiento de ESLint y Prettier (julio de 2025): El phishing y el typosquatting (
npnjs.com) robaron credenciales de npm e introdujeron malware en paquetes populares. Es otro recordatorio de que hay que proteger las cuentas de los responsables de mantenimiento con autenticación de dos factores.Uso de agentes de programación con IA para crear malware en el incidente de seguridad del paquete malicioso Nx (agosto de 2025)
Ataque a la cadena de suministro de npm mediante el compromiso de un responsable de mantenimiento de código abierto (septiembre de 2025)
Protege tu cadena de suministro con Snyk
Los problemas de seguridad de la cadena de suministro afectaron al 87 % de las personas encuestadas. Protege la tuya con Snyk.



