- Cientos de paquetes npm fueron comprometidos por un gusano autorreplicante llamado Shai-Hulud, y GitHub eliminó más de 500 versiones contaminadas.
- El malware roba secretos (tokens npm, PAT de GitHub, claves en la nube) y vuelve a publicar paquetes infectados utilizando los derechos de publicación de las víctimas.
- La evidencia apunta a ataques contra Linux y macOS, abuso de TruffleHog y un flujo de trabajo de GitHub Actions que filtra datos.
- Pasos inmediatos: rotar tokens, auditar dependencias y repositorios de GitHub, aplicar MFA/2FA y buscar IoC, incluido el tráfico de bundle.js y webhook.site.

Lo que comenzó como otro problema con la cadena de suministro en el mundo de JavaScript se ha convertido en un gran incidente que afecta al ecosistema de NPM. Informes de diversas fuentes confirman una cepa de malware que se autopropaga. rastreado como Shai-Hulud, que compromete las credenciales de los desarrolladores, expone el código y vuelve a publicar paquetes contaminados para mantener la infección activa.
Aunque los recuentos difieren según la fuente, el consenso es claro: estamos tratando con cientos de liberaciones envenenadas, incluyendo una biblioteca ampliamente utilizada que se descarga millones de veces a la semana. GitHub eliminó más de 500 versiones comprometidas para frenar la propagación, y los equipos de seguridad de todo el mundo instan a los desarrolladores a rotar las credenciales y revisar sus repositorios y pipelines en busca de indicios de intrusión.
Qué pasó y por qué es importante
Las investigaciones indican que la operación probablemente comenzó con La recolección de credenciales atrae la suplantación de NPM, instando a los mantenedores a "actualizar" la configuración de MFA. Con acceso en mano, el actor de amenazas implementó un gusano que se ejecuta tras la instalación, busca secretos y republica compilaciones infectadas bajo la identidad de la víctima, convirtiendo a los mantenedores de confianza en amplificadores del ataque.
Shai‑Hulud combina dos ideas peligrosas: Propagación automatizada y robo de secretosAbusa de tokens npm robados para publicar nuevas versiones de paquetes y aprovecha tokens de GitHub y claves en la nube (AWS, GCP, Azure) para moverse lateralmente y exfiltrar datos. Esta combinación potencia el radio de acción, permitiendo que una vulneración se propague a innumerables usuarios posteriores.
Los objetivos parecen estar sesgados hacia sistemas tipo Unix. El análisis indica que la mayoría La lógica maliciosa se ejecuta en Linux y macOS, basado en comprobaciones del entorno, aunque la fase de descubrimiento de secretos (especialmente con TruffleHog) puede ser más extensa. Este enfoque redujo la huella del gusano, pero aun así dejó expuestas a una amplia gama de equipos de desarrolladores.
Los paquetes de varias organizaciones importantes se vieron afectados, junto con módulos comunitarios populares. En un ejemplo destacado, @ctrl/tinycolor El paquete, descargado millones de veces por semana, fue incluido en la batalla, lo que demuestra cuán profundamente la infección podía introducirse en el gráfico de dependencias.
Cómo funciona el gusano (desglose técnico)
La carga útil principal se envía como un archivo JavaScript pesado, comúnmente llamado paquete.js (más de 3 MB en las muestras observadas). Se ejecuta mediante un gancho postinstall añadido a package.json, lo que significa que el código malicioso se ejecuta automáticamente justo después de que el usuario instale el paquete desde npm.
Dentro de bundle.js hay módulos para Interacción con la API de GitHub, SDK en la nube (AWS/GCP), asistentes de red y rutinas para ejecutar TruffleHog y descubrir secretos. El script realiza un inventario del sistema operativo, localiza un token npm y busca un token de GitHub válido. Si no encuentra ninguno, abandona el sistema; de lo contrario, inicia la exfiltración y la replicación.
Una peculiaridad notable: algunos paquetes infectados contenían un archivo llamado paquete.tar En lugar de la convención de nomenclatura habitual, una señal que ayudaba a los investigadores a identificar artefactos comprometidos. Los analistas también observaron una variante que se ejecutaba como un gancho de preinstalación; un caso temprano citado fue ngx-bootstrap 18.1.4, que pudo haber servido como cabeza de playa inicial en la expansión.
Una vez en ejecución, el malware enumera los paquetes más descargados del desarrollador a través de la API de búsqueda npm. descomprime cada archivo tar, elimina bundle.js, inyecta un comando postinstall, actualiza la versión y republica en npm con el token de la víctima. Esto convierte el portafolio del desarrollador en un vehículo para futuras infecciones.
Exfiltración de secretos y flujos de trabajo de GitHub
Para la recolección de credenciales, Shai-Hulud escanea en busca de tokens npm, tokens de acceso personal de GitHub y claves API en la nube (AWS, GCP, Azure). Luego, crea un repositorio público de GitHub llamado "Shai‑Hulud" en la cuenta de la víctima y envía un archivo de datos (p. ej., data.json) con los secretos robados, exponiéndolos al mundo.
Al mismo tiempo, los investigadores observaron un ángulo astuto de GitHub Actions: el gusano crea una rama llamada 'shai‑hulud' a través de repositorios accesibles y envía un archivo de flujo de trabajo (shai‑hulud‑workflow.yml). El flujo de trabajo, que se activa al enviar información, recopila secretos y los envía a la infraestructura del atacante, a veces después de... codificación doble Base64 para ofuscar el contenido en tránsito.
También hay evidencia de un guión de migración que clones repositorios privados/internos de organizaciones a las que la víctima puede acceder, realojando estas vulnerabilidades en la cuenta del usuario como réplicas públicas. El objetivo parece ser el robo automatizado de código fuente de proyectos privados, lo que aumenta la presión sobre las organizaciones afectadas.
Varios informes señalan artefactos de asistencia de IA dentro de los scripts de bash (comentarios e incluso emojis), lo que sugiere que el atacante puede haber usado un LLM para acelerar el desarrollo de los componentes de automatización del malware.
Alcance y paquetes destacados
A través de eliminaciones coordinadas, GitHub eliminó Más de 500 versiones comprometidas Para detener la propagación del gusano. Si bien el total exacto continúa evolucionando, la lista abarca numerosos ecosistemas y organizaciones, con un impacto posterior para los desarrolladores que actualizaron durante el período activo.
Entre los paquetes y espacios de nombres citados con frecuencia: @ctrl/tinycolor (millones de descargas semanales), múltiples @crowdstrike/* componentes (como commitlint y bibliotecas de UI) y una amplia gama de módulos comunitarios que incluyen ngx-bootstrap, ng2-carga de archivos, ngx‑tostadoray más. CrowdStrike indicó que su plataforma principal no se vio afectada y que Las llaves fueron rotadas rápidamente tras detectar entradas maliciosas en el registro público.
- Ejemplos vinculados a la ola: @ctrl/tinycolor; @crowdstrike/commitlint; @crowdstrike/foundry‑js; @crowdstrike/glide‑core; ngx‑bootstrap; ng2‑file‑upload; ngx‑toastr; @nativescript‑community/*; @teselagen/*; @things‑factory/*; y otros.
- Los investigadores también vieron múltiples versiones maliciosas por paquete en algunos casos, probablemente debido a que el gusano se propaga a través de las cuentas de varios mantenedores dentro del mismo proyecto.
Respuesta de la plataforma y cambios de seguridad
Las acciones inmediatas de GitHub incluyeron purgar paquetes defectuosos conocidos de npm y bloqueando las cargas que coinciden con los Indicadores de Compromiso (IoC). La compañía también está implementando controles de publicación más estrictos: autenticación de dos factores (A2FA) obligatoria para publicaciones locales, tokens granulares de menor duración (por ejemplo, siete días) y una adopción más amplia de Publicaciones de confianza para reducir la dependencia de secretos de larga duración.
Los próximos cambios descontinuarán los tokens clásicos heredados y la 2FA basada en TOTP para publicaciones. predeterminado para no permitir la publicación de tokensy ampliar los proveedores para la Publicación Confiable. GitHub ha anunciado un lanzamiento gradual con documentación y guías de migración, reconociendo que algunos flujos de trabajo necesitarán ajustes.
Los equipos de inteligencia de amenazas y respuesta a incidentes de toda la industria (incluidos Unit 42, Kaspersky, Trend Micro y otros) han orientación emitida y detecciones mientras comparte IoC con pares y alianzas para acelerar las actualizaciones de protección.
Cómo reducir el riesgo ahora mismo
Actúe con rapidez, asumiendo que cualquier equipo de desarrollo que haya instalado paquetes npm recientemente podría haber filtrado información confidencial. La prioridad es... contener el abuso de credenciales, detener la persistencia y eliminar las dependencias contaminadas de las cadenas de compilación.
- Rote los tokens npm, las claves PAT/SSH de GitHub y las credenciales de la nube (AWS/GCP/Azure) de inmediato; considere que todos los secretos presentes en los hosts de los desarrolladores están comprometidos.
- Auditar dependencias a través de package‑lock.json/yarn.lock; eliminar o anclar de versiones comprometidas conocidas; reinstalar desde fuentes limpias.
- Implementar MFA/2FA en GitHub y npm; pasar a Trusted Publishing cuando sea posible para dejar fuera del circuito a los tokens de larga duración.
- Examine GitHub en busca de repositorios públicos inesperados llamados 'Shai‑Hulud', ramas o flujos de trabajo desconocidos y ejecuciones de acciones anómalas.
- Fortalecer la CI/CD con RBAC de privilegios mínimos, firma/verificación de artefactos y escaneo SCA continuo; tratar El consumo de código abierto como un riesgo gestionado.
Consejos para la búsqueda de amenazas (verificaciones de señal alta)
Busque conexiones salientes a webhook.sitio dominios, en particular la URI observada en varios informes. En los endpoints, busque la presencia de paquete.js en directorios temporales o de paquetes y para un archivo de Acciones de GitHub llamado shai‑hulud‑workflow.yml.
- Telemetría de red: registros de DNS/URL que contienen webhook.site; marque la ruta específica bb8ca5f6‑4175‑45d2‑b042‑fc9ebb8170b7 si la ve.
- Telemetría de archivos: creación o ejecución de bundle.js; la presencia de shai‑hulud‑workflow.yml en los hosts de desarrolladores de Linux/macOS.
- Telemetría de procesos: Invocaciones de TruffleHog donde no se espera (tenga en cuenta que puede existir un uso legítimo en algunas organizaciones).
Indicadores de compromiso (IoC)
Las pistas de archivos y cadenas observadas en las investigaciones incluyen: paquete.js y shai‑hulud‑workflow.yml, con la cadena literal 'shai‑hulud' que aparece en ramas, repositorios y flujos de trabajo.
- Archivos: bundle.js; shai‑hulud‑workflow.yml
- Cadenas: shai‑hulud; paquete.tar
- Hashes (selected): 46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09; b74caeaa75e077c99f7d44f46daaf9796a3be43ecf24f2a1fd381844669da777; dc67467a39b70d1cd4c1f7f7a459b35058163592f4a9e8fb4dffcbba98ef210c; 4b2399646573bb737c4969563303d8ee2e9ddbd1b271f1ca9e35ea78062538db; C96FBBE010DD4C5BFB801780856EC228; 78E701F42B76CCDE3F2678E548886860
- Red: https://webhook.site/bb8ca5f6-4175-45d2-b042-fc9ebb8170b7 (variantes y subrutas observadas)
Cronología y análisis en curso
Los informes atribuyen el descubrimiento inicial a mediados de septiembre de 2025, con Las acciones de contención alcanzarán su punto máximo alrededor del 16 al 19 de septiembreGitHub y varios proveedores han actualizado desde entonces las protecciones, las detecciones y las directrices. Se esperan más hallazgos retroactivos a medida que las organizaciones finalicen las revisiones de incidentes y amplíen las listas de versiones afectadas.
Algunas evidencias sugieren que el incidente construido sobre filtraciones secretas previas, lo que pone de relieve cómo los tokens de larga duración y las credenciales almacenadas en caché pueden alimentar nuevas oleadas de vulnerabilidades meses después. Esto debería reforzar los esfuerzos para acortar la vida útil de los tokens y adoptar modelos de publicación que... minimizar la expansión secreta.
No todos los informes coinciden en los totales exactos o los primeros paquetes en la cadena, pero el panorama general coincide: gusano npm autorreplicante que convirtió la confianza de los desarrolladores en un arma y automatizó los derechos de publicación para escalar rápidamente, más rápido de lo que muchos equipos podrían detectar solo con una revisión manual.
El evento ilustra la rapidez con la que los procesos de desarrollo modernos pueden convertirse en vías de acceso para el malware. Autenticación más estrictaAl eliminar tokens de larga duración del camino, fortalecer CI/CD y buscar agresivamente IoC, las organizaciones pueden contener la exposición hoy y hacer que la próxima ola sea mucho más difícil de ejecutar.
