Una nueva campaña de malware de cadena de suministro, denominada Shai-Hulud, ha comprometido cientos de paquetes populares en npm, incluyendo herramientas ampliamente usadas como Zapier, ENS Domains, PostHog y Postman.
El malware roba secretos de desarrolladores y pipelines de CI/CD, publicándolos automáticamente en repositorios de GitHub codificados, lo que expone información sensible de forma masiva.
En el momento de la publicación, se contaban 27.600 repositorios relacionados con el ataque en GitHub, mostrando la magnitud de la amenaza.
¿Cómo opera Shai-Hulud en npm?
El malware Shai-Hulud tiene un mecanismo altamente automatizado:
- Descarga paquetes legítimos y modifica su archivo package.json para inyectar un script malicioso.
- Publica los paquetes trojanizados en npm utilizando cuentas de mantenedores comprometidas.
- Extrae secretos de GitHub, npm y plataformas cloud como AWS, GCP y Azure, que luego se publican en repositorios generados automáticamente en GitHub bajo el nombre “Sha1-Hulud: The Second Coming”.
Investigadores de Aikido Security identificaron inicialmente 105 paquetes infectados, que rápidamente crecieron a 492 solo en nombres de paquetes, y más de 27.000 paquetes en total con múltiples versiones comprometidas.
El malware y su carga destructiva
Shai-Hulud ejecuta varias fases durante la infección. Dos archivos son claves en la operación:
setup_bun.js: un dropper disfrazado de instalador de Bun.bun_environment.js: un archivo de 10 MB altamente ofuscado que contiene un loop anti-análisis y un conjunto de cadenas hexadecimales codificadas.
Además de robar secretos, el malware tiene una fase destructiva que puede sobrescribir todo el directorio home del usuario si no logra autenticarse con GitHub o npm para publicar los datos robados.
Riesgos para desarrolladores y CI/CD
El malware Shai-Hulud demuestra cómo un ataque de cadena de suministro puede afectar directamente a entornos de desarrollo y despliegue:
- Repositorios de GitHub se crean automáticamente con archivos como
cloud.json,contents.json,environment.jsonytruffleSecrets.json, conteniendo los secretos robados. - Paquetes esenciales, como los de Zapier, quedan comprometidos, afectando integraciones críticas.
- La campaña también pone en riesgo dominios ENS y bibliotecas clave para DApps y wallets de Ethereum.
GitHub está eliminando repositorios maliciosos a medida que aparecen, pero el atacante los recrea rápidamente, evidenciando la rapidez con la que estos ataques pueden escalar.
Medidas de mitigación y recomendaciones
Los investigadores de Wiz y Aikido Security recomiendan:
- Identificar y reemplazar paquetes comprometidos con versiones legítimas.
- Rotar inmediatamente todos los secretos y tokens vinculados a npm, GitHub y servicios en la nube.
- Deshabilitar, cuando sea posible, scripts postinstall de npm durante la integración continua.
- Mantener una vigilancia constante sobre publicaciones y alertas de seguridad en npm y GitHub.
Estos pasos son críticos para minimizar el impacto de la campaña Shai-Hulud y proteger los entornos de desarrollo frente a filtraciones masivas de información confidencial.
