Del 21 al 24 de noviembre de 2025, una segunda oleada masiva del ataque a la cadena de suministro Sha1-Hulud comprometió más de 600 paquetes npm pertenecientes a grandes organizaciones, incluyendo Zapier, ENS Domains, PostHog, AsyncAPI y Postman. El ataque afectó a más de 25.000 repositorios, con un promedio de aproximadamente 1.000 nuevos repositorios comprometidos cada 30 minutos en el momento de mayor intensidad. Estos paquetes representan en conjunto 132 millones de descargas mensuales, creando una exposición extremadamente amplia en el ecosistema JavaScript.
| Fecha | 2025-11-26 17:26:49 |
Resumen técnico
El ataque representa una evolución significativa respecto a la campaña Shai-Hulud de septiembre de 2025, introduciendo varias capacidades nuevas y peligrosas. Los atacantes comprometieron cuentas de mantenedores para publicar versiones troyanizadas que se ejecutan durante la fase de preinstalación, garantizando la ejecución en los servidores de compilación y evadiendo las herramientas de escaneo estático.
El payload malicioso utiliza un enfoque en dos fases:
- Durante la fase de preinstalación,
setup_bun.jsinstala o localiza el runtime Bun bun_environment.jsejecuta luego el payload malicioso principal
Principales capacidades maliciosas:
- Robo automático de credenciales usando TruffleHog para escanear tokens npm, credenciales en la nube y variables de entorno
- Registro automático de GitHub runners autoalojados con flujos de trabajo maliciosos para la ejecución de comandos
- Exfiltración cruzada entre víctimas, donde los secretos de una víctima se envían al repositorio de otra
- Mecanismo de autorregeneración mediante búsqueda en GitHub para recuperar repositorios si estos son eliminados
- Propagación automática que infecta hasta 100 paquetes por cada token comprometido
Funcionalidad de borrado destructivoque elimina todo el directorio home del usuario si falla la exfiltración- Escalada de privilegios en Linux mediante Docker para obtener acceso root
Paquetes comprometidos y versiones relacionadas: Los siguientes paquetes (492 en total) han sido confirmados como comprometidos en esta oleada. Los paquetes clave afectados incluyen:
| Organización | Paquetes principales comprometidos |
|---|---|
| AsyncAPI | @asyncapi/cli, @asyncapi/generator, @asyncapi/parser |
| PostHog | posthog-node, posthog-js, @posthog/cli |
| Postman | @postman/secret-scanner-wasm, @postman/csv-parse |
| ENS Domains | @ensdomains/ensjs, @ensdomains/ui, @ensdomains/thorin |
| Zapier | @zapier/zapier-sdk, zapier-platform-core, zapier-platform-cli |
[La lista completa de los 492 paquetes]
@asyncapi/diff
@asyncapi/nodejs-ws-template
go-template
… (lista completa omitida por brevedad)
Recomendaciones
Contención inmediata: Escanear todos los proyectos en busca de los paquetes listados anteriormente y eliminar inmediatamente las versiones comprometidas. Limpiar las cachés de npm/yarn/pnpm y revisar los archivos package-lock.
Rotación de credenciales: Asumir que todas las credenciales están comprometidas. Rotar inmediatamente:
- Tokens NPM (especialmente antes de la revocación de los tokens clásicos de npm prevista para el 9 de diciembre)
- Credenciales de proveedores en la nube (AWS, GCP, Azure)
- Tokens de acceso personal y tokens OAuth de GitHub
- Cualquier otro secreto almacenado en los entornos de desarrollo
- Auditoría de repositorios: Verificar todos los repositorios de GitHub en busca de:
- Repositorios públicos inesperados con nombres aleatorios de 18 caracteres
- Archivos de flujo de trabajo sospechosos en .github/workflows/
- Runners autoalojados inesperados llamados “SHA1HULUD”
- Descripciones de repositorios que contengan “Sha1-Hulud: The Second Coming”
- Fortalecimiento de la cadena de suministro:
- Imponer el anclaje (pinning) estricto de dependencias y el uso de archivos de bloqueo (lock files)
- Implementar el escaneo automático de dependencias con notificaciones
- Migrar a la publicación confiable (trusted publishing) de npm antes de la fecha límite del 9 de diciembre
- Habilitar 2FA con llaves de seguridad físicas para todas las cuentas de mantenedores
- Respuesta ante incidentes: Asumir el compromiso de cualquier sistema que haya ejecutado estos paquetes. Realizar un análisis forense completo de los sistemas de compilación y de las estaciones de trabajo de los desarrolladores potencialmente expuestos.
[Callforaction-THREAT-Footer]