Esta mañana, se nos alertó de un ataque a gran escala contra npm. Parece ser obra de los mismos autores del ataque Nx del 27 de agosto de 2025. Publicado originalmente por Socket y StepSecurity, que señalaron que 40 paquetes habían sido comprometidos. Desde entonces, otros 147 paquetes han sido infectados con malware, incluidos paquetes de CrowdStrike.
La magnitud, el alcance y el impacto de este ataque son significativos. Los atacantes están utilizando en gran parte el mismo manual que en el ataque original, pero han intensificado sus acciones. Lo han convertido en un gusano completo, que realiza las siguientes acciones de forma automática:
- Robar secretos y publicarlos en GitHub de forma pública.
- Ejecute trufflehog y consulte los puntos finales de metadatos de Cloud para recopilar secretos.
- Intento de crear una nueva acción de GitHub con un mecanismo de extracción de datos a través de webhook[.]site.
- Repite los repositorios en GitHub a los que un usuario tiene acceso y hazlos públicos.
Desde nuestra alerta inicial esta mañana, hemos confirmado los siguientes comportamientos adicionales y detalles importantes. Para aquellos que no lo sepan, Shai Hulud es el nombre del gusano de la franquicia Dune. Una clara indicación de la intención de los atacantes.

Para evitar verse comprometido por paquetes como este, ¡echa un vistazo a Aikido safe-chain!
Lo que hace el gusano
- Harvest: escanea el entorno del host y CI en busca de secretos: process.env, escaneo con TruffleHog y puntos finales de metadatos en la nube (AWS/GCP) que devuelven credenciales de instancia/servicio.
- Exfiltrate (1) — Repositorio GitHub: crea un repositorio llamado Shai-Hulud en la cuenta comprometida y envía un volcado JSON que contiene información del sistema, variables de entorno y secretos recopilados.
- Exfiltrar (2) — GitHub Actions → webhook: elimina un flujo de trabajo
.github/workflows/shai-hulud-workflow.ymlque serializa${{ toJSON(secrets) }}, los envía a un atacantewebhook[.]sitioURL y escribe una copia doble en base64 en los registros de Actions. - Propagación: utiliza cualquier token npm válido que encuentre para enumerar e intentar actualizar los paquetes que controla el mantenedor comprometido (propagación de la cadena de suministro).
- Amplificar: repite los repositorios accesibles de la víctima, haciéndolos públicos o añadiendo el flujo de trabajo/rama que desencadenará nuevas ejecuciones y fugas.
Filtración de secretos
Al igual que con el ataque Nx original, vemos que los atacantes están llevando a cabo un ataque de tipo «smash-and-grab» (romper y robar). La carga maliciosa publica un repositorio «Shai-Hulud» con credenciales/tokens robados y, a través de una cuenta de GitHub, convierte el repositorio privado en público:


Autopropagación a través de npm
Una de las características más llamativas de este ataque es que se comporta como un auténtico gusano. En lugar de depender de un único paquete infectado para propagarse, el código está diseñado para volver a publicarse en otros paquetes npm propiedad del mantenedor comprometido.
Así es como funciona la lógica del gusano:
- Descargar un archivo tarball de destino: obtiene una versión existente del paquete del registro npm.
- Modificar
package.json– el gusano aumenta la versión del parche (por ejemplo,1.2.3 → 1.2.4) e inserta un nuevo gancho de ciclo de vida (postinstalación) - Copiar su propia carga útil – el script en ejecución (
process.argv[1]) se escribe en el archivo tar comobundle.jsEsto garantiza que cualquier código que haya infectado un paquete ahora se encuentre dentro del siguiente. - Vuelve a publicar el paquete troyanizado: el archivo comprimido modificado se comprime con gzip y se vuelve a enviar a npm utilizando las credenciales del administrador.
Este ciclo permite al malware infectar continuamente todos los paquetes a los que tiene acceso un administrador. Cada paquete publicado se convierte en un nuevo vector de distribución: tan pronto como alguien lo instala, el gusano se ejecuta, se replica y se propaga aún más en el ecosistema.
En resumen: el atacante no necesita seleccionar manualmente los paquetes. Una vez que se compromete un solo entorno, el gusano automatiza la propagación aprovechando los derechos de publicación del propio administrador.
Para obtener un análisis completo del malware, recomendamos revisar la publicación de getsafety .
Paquetes impactados
La historia continúa...
Asesoramiento sobre remediación
- Comprueba las versiones que estás utilizando.
- Limpia tu caché de npm.
- Reinstala todos los paquetes de tu repositorio.
- Asegúrate de utilizar un archivo de bloqueo de paquetes y utiliza versiones fijadas.
Cómo saber si estás afectado utilizando el Aikido:
Si eres usuario de Aikido, comprueba tu feed central y filtra los problemas de malware. La vulnerabilidad aparecerá como un problema crítico 100/100 en el feed. Consejo: Aikido vuelve a escanear tus repositorios cada noche, aunque recomendamos activar también un escaneo completo.
Si aún no eres usuario de Aikido, crea una cuenta y conecta tus repositorios. Nuestra cobertura contra malware patentada está incluida en el plan gratuito (no se requiere tarjeta de crédito).
Para protección futura, considere utilizar Aikido SafeChain (código abierto), un envoltorio seguro para npm, npx, yarn... Safechain se integra en sus flujos de trabajo actuales, funciona interceptando los comandos npm, npx, yarn, pnpm y pnpx y verificando los paquetes en busca de malware antes de instalarlos contra Aikido Intel: inteligencia de amenazas de código abierto. Detenga las amenazas antes de que lleguen a su máquina.
Protege tu software ahora.



.avif)
