Nueva ola de malware Shai-Hulud compromete 600 paquetes npm

Según la empresa de seguridad de aplicaciones Socket, los hackers publicaron 639 versiones maliciosas de 323 paquetes únicos en aproximadamente una hora el 19 de mayo, entre las 01:56 y las 02:56 UTC. El ataque comenzó comprometiendo la cuenta npm 'atool', que publica paquetes en el espacio de nombres @antv. Entre las bibliotecas afectadas se encuentran echarts-for-react, @antv/g2, @antv/g6, @antv/x6, @antv/l7, @antv/g2plot, @antv/graphin, timeago.js, size-sensor y canvas-nest.js. Investigadores de Endor Labs señalan que algunos paquetes, como timeago.js, size-sensor y jest-canvas-mock, no habían recibido actualizaciones legítimas durante mucho tiempo, por lo que era menos probable que tuvieran configurada la publicación confiable OIDC. Por ejemplo, jest-canvas-mock, que aún tiene 10 millones de descargas mensuales, estaba inactivo desde hacía unos tres años. Socket mantiene una lista de artefactos de paquetes afectados por todos los ataques de Shai-Hulud, que ya supera las 1000 entradas.

Publicación en GitHub

El malware compromete cuentas de mantenedores o tokens de publicación para subir paquetes legítimos con código malicioso que roba secretos de desarrolladores y entornos CI/CD, y puede propagarse a otros proyectos usando las credenciales robadas. La última ola inyecta un 'index.js' fuertemente ofuscado que intenta robar credenciales de GitHub, npm, cloud, Kubernetes, Vault, Docker, bases de datos y SSH. El malware se dirige principalmente a estaciones de trabajo de desarrolladores y entornos CI/CD como GitHub Actions, GitLab CI, Jenkins, Azure DevOps, CircleCI, Vercel, Netlify y otros. Los datos robados se serializan, comprimen con Gzip, cifran con AES-256-GCM y envuelven con RSA-OAEP para dificultar la inspección de red. Cuando se dispone de credenciales de GitHub, el malware usa la API de GitHub para crear automáticamente nuevos repositorios en la cuenta de la víctima y subir los datos robados. Estos repositorios contienen un archivo Readme con la cadena 'niaga og ew ereh :duluh-iahs', que es la inversión de 'Shai-Hulud: Here We Go Again', una frase utilizada en la filtración del malware Shai-Hulud la semana pasada. Según Aikido Security, hay más de 2700 repositorios fraudulentos en GitHub que coinciden con los marcadores de la campaña. El canal principal de exfiltración es filev2.getsession[.]org/file/ a través de la red P2P Session. Microsoft también identificó el endpoint t.m-kosche.com para enviar las credenciales robadas. 'En la red, este tráfico está cifrado de extremo a extremo en TCP/443, indistinguible del tráfico legítimo de la aplicación Session a nivel de red. No hay un endpoint C2 tradicional que bloquear por nombre de host o IP', afirman los investigadores de Endor Labs.

Paquete de apariencia legítima

Una novedad clave en esta variante de Shai-Hulud es su capacidad de generar atestaciones de procedencia Sigstore válidas mediante el abuso de tokens OIDC de entornos CI comprometidos y su envío a Fulcio y Reko. Una capacidad similar se observó en el payload del ataque a TanStack atribuido a TeamPCP, donde el actor malicioso publicó versiones maliciosas con atestación de procedencia SLSA verificable. Como resultado, los paquetes npm maliciosos pueden parecer firmados legítimamente y pasar las verificaciones estándar de procedencia a pesar de contener malware robacredenciales. La capacidad de autopropagación también está presente: el malware valida tokens npm robados, enumera paquetes propiedad de la víctima, descarga los tarballs, inyecta el payload malicioso y republica los paquetes infectados con números de versión incrementados. Dado que el código de Shai-Hulud fue filtrado recientemente en GitHub por TeamPCP y ya se ha usado en ataques, la atribución de la nueva campaña resulta más difícil.

Persistencia mediante VS Code y Claude Code

Socket afirma que esta variante difiere técnicamente de los payloads anteriores de Mini Shai-Hulud, pero comparte las mismas características operativas. 'Los payloads de AntV difieren de artefactos anteriores como router_init.js de TanStack y router_runtime.js de Intercom. La muestra de AntV utiliza un index.js raíz, un endpoint C2 primario diferente y un cuerpo de payload más pequeño. Sin embargo, el modelo operativo central es consistente', explica Socket. Aikido Security confirma que, aunque el modelo central es el mismo, hay diferencias: el payload es ahora más pequeño y existe persistencia mediante puertas traseras en configuraciones de VS Code y Claude Code. Los investigadores advierten que esto podría indicar que 'el atacante está pensando en lo que sucede después de la limpieza inicial del compromiso'.

Recomendaciones

La recomendación general para los desarrolladores que descargaron alguno de los paquetes npm infectados es eliminarlos inmediatamente o degradar a una versión buena conocida publicada antes del 18 de mayo, y luego revocar y rotar todas las credenciales expuestas (por ejemplo, tokens de GitHub, cloud, claves SSH). Los informes de Socket, Endor Labs, Aikido Security y Step Security incluyen indicadores de compromiso junto con consejos de detección, remediación y mitigación para proteger los entornos de desarrollo.

image
image
GitHub repositories generated by Shai-Hulud campaign
GitHub repositories generated by Shai-Hulud campaign
article image
article image

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *