- En el registro de NPM, más de 1,000 componentes fueron infectados en cuestión de horas con el mismo método, y se distribuyeron nuevas versiones que incluían código malicioso
- Los paquetes maliciosos se hacían pasar por un script de instalación del runtime Bun, agregando
setup_bun.js y bun_environment.js ofuscado; al ejecutarse, usaban TruffleHog para robar credenciales locales
- La información sensible recopilada, como tokens de AWS/GCP/Azure, GitHub y NPM, era enviada al exterior mediante un runner de GitHub Actions llamado
SHA1HULUD
- El script malicioso ejecutaba automáticamente
npm publish para realizar una autorreplicación tipo gusano, lo que terminó infectando más de 27,000 repositorios de GitHub
- Se considera otro caso que vuelve a poner en evidencia la amenaza a la seguridad de la cadena de suministro en todo el ecosistema open source
Resumen del ataque
- El 24 de noviembre de 2025, HelixGuard detectó que más de 1,000 paquetes del registro de NPM fueron infectados en pocas horas con la misma técnica
- Las nuevas versiones fingían agregar el runtime Bun e incluían el script
preinstall: node setup_bun.js
- El archivo
bun_environment.js, distribuido junto con ellos, contenía código malicioso ofuscado que descargaba y ejecutaba TruffleHog
- TruffleHog escaneaba y robaba del entorno local tokens de NPM, credenciales de AWS/GCP/Azure y variables de entorno
- La información robada se exfiltraba creando un runner de GitHub Actions llamado
SHA1HULUD y usando un repositorio de GitHub con la descripción Sha1-Hulud: The Second Coming.
- HelixGuard sugiere que este ataque podría provenir del mismo actor detrás del incidente “Shai-Hulud” ocurrido en septiembre de 2025
Análisis del funcionamiento del código malicioso
- Como ejemplo, el análisis del paquete
@asyncapi/specs mostró que la versión publicada en NPM estaba infectada, mientras que el repositorio fuente en GitHub seguía seguro
- El atacante modificó
package.json para añadir setup_bun.js y hacer que ese script llamara a bun_environment.js
bun_environment.js era un archivo JavaScript altamente ofuscado de más de 10 MB, cuyas funciones principales eran las siguientes
- Recopilar credenciales y tokens de nube desde variables de entorno
- Escanear secretos con TruffleHog
- Exfiltrar datos mediante GitHub Actions
- Además, modificaba
package.json para insertar el código infectado y ejecutaba automáticamente npm publish, propagándose como un gusano
Infección en GitHub y exfiltración de datos
- El script malicioso creaba el archivo
.github/workflows/formatter_123456789.yml y registraba el runner SHA1HULUD
- Ese workflow empaquetaba los secretos del repositorio en un archivo
actionsSecrets.json con codificación Base64 doble
- Después creaba un repositorio de GitHub con nombre aleatorio y la descripción
Sha1-Hulud: The Second Coming., y subía allí los datos
- HelixGuard confirmó que más de 27,000 repositorios de GitHub resultaron infectados
- Entre los secretos robados había credenciales de múltiples servicios, incluidos
AWS_ACCESS_KEY_ID, SLACK_WEBHOOK_URL, CODECOV_TOKEN y WEBFLOW_TOKEN
Lista de paquetes infectados
- HelixGuard reportó que cientos de paquetes de NPM fueron infectados
- Entre ellos había paquetes de organizaciones importantes como
@asyncapi, @ensdomains, @posthog, @zapier, @postman y @voiceflow
- Cada paquete tenía múltiples versiones infectadas, por ejemplo
@asyncapi/specs@6.8.2 y @postman/csv-parse@4.0.5
- La mayoría de los paquetes infectados suplantaban proyectos open source legítimos, con código malicioso insertado durante el proceso de despliegue automático
Implicaciones de seguridad
- Este ataque muestra un caso de infección a gran escala del ecosistema open source mediante la explotación de debilidades en la seguridad de la cadena de suministro
- También evidencia la necesidad de reforzar la seguridad en toda la infraestructura de desarrollo, incluidas credenciales de NPM, GitHub y servicios en la nube
- HelixGuard recomienda detener de inmediato la instalación de los paquetes infectados y revocar inmediatamente los tokens y credenciales relacionados
Aún no hay comentarios.