Masiva Campaña Shai-Hulud Compromete Más de 600 Paquetes npm, Ataca Secretos de Desarrolladores
Un nuevo ataque de cadena de suministro **Shai-Hulud** ha inyectado código malicioso en más de 600 paquetes en el registro de Node Package Manager (**npm**). La campaña, que apunta principalmente al ecosistema `@antv`, roba secretos de desarrolladores y CI/CD, exfiltrándolos a través de la red Session P2P y GitHub.

Actores de amenazas han publicado más de 600 paquetes maliciosos en el índice de **Node Package Manager (npm)** como parte de una nueva campaña de cadena de suministro **Shai-Hulud**.
La mayoría de los paquetes afectados se encuentran en el ecosistema `@antv`, que incluye bibliotecas para gráficos, visualización de grafos, creación de diagramas de flujo y mapeo. Sin embargo, paquetes populares fuera de este espacio de nombres también han sido comprometidos.
### Ataque de una hora
Al igual que en la campaña anterior de **Shai-Hulud** que afectó a los paquetes **TanStack** y **Mistral**, el payload recopila secretos de entornos de desarrolladores y CI/CD y los exfiltra a través de la red Session P2P para complicar los esfuerzos de detección y eliminación.
El actor de amenazas también utilizó **GitHub** como mecanismo de exfiltración de respaldo y publicó datos robados en repositorios bajo las cuentas de las víctimas cuando se encontraron tokens utilizados para la publicación.
Según la empresa de seguridad de aplicaciones **Socket**, los hackers publicaron 639 versiones maliciosas en 323 paquetes únicos en aproximadamente una hora el 19 de mayo, entre las 01:56 UTC y las 02:56 UTC.
El ataque comenzó con la compromiso de la cuenta npm `atool`, que publica los paquetes en el espacio de nombres `@antv`. Algunas de las bibliotecas afectadas incluyen:
* echarts-for-react
* @antv/g2
* @antv/g6
* @antv/x6
* @antv/l7
* @antv/g2plot
* @antv/graphin
* timeago.js
* size-sensor
* canvas-nest.js
Investigadores de **Endor Labs** destacan que algunos de los paquetes (por ejemplo, timeago.js, size-sensor y jest-canvas-mock) no habían recibido una actualización legítima en mucho tiempo y era menos probable que tuvieran configurada su función de seguridad de publicación confiable OIDC.
Por ejemplo, aunque *jest-canvas-mock* todavía tiene 10 millones de descargas mensuales, ha estado inactivo durante aproximadamente 3 años.
Investigadores de **Socket** mantienen una lista de artefactos de paquetes afectados por todos los ataques de **Shai-Hulud**, que ha crecido a más de 1.000 entradas.
Las campañas de **Shai-Hulud** comenzaron en septiembre pasado y continúan afectando a múltiples ecosistemas de software, como npm, PyPI y Composer, en menor medida.
### Publicación en GitHub
El malware compromete cuentas de mantenedores o tokens de publicación para insertar código malicioso en paquetes legítimos que roba secretos de desarrolladores y CI/CD, y puede propagarse a otros proyectos utilizando las credenciales robadas.
La última ola implica la inyección de un payload `index.js` fuertemente ofuscado que intenta robar credenciales de **GitHub**, npm, cloud, Kubernetes, Vault, Docker, bases de datos y SSH.
Principalmente se dirige a estaciones de trabajo de desarrolladores y entornos de CI/CD, incluyendo **GitHub Actions**, GitLab CI, Jenkins, Azure DevOps, CircleCI, Vercel, Netlify y otras plataformas de compilación.
Los datos robados se serializan, comprimen con Gzip, cifran con AES-256-GCM y se envuelven con RSA-OAEP para dificultar la inspección de red.
Cuando las credenciales de **GitHub** están disponibles, el malware utiliza la API de **GitHub** para crear automáticamente nuevos repositorios bajo la cuenta de la víctima y subirles los datos robados.
Los repositorios publicados como resultado de este ataque tienen un archivo Readme con la cadena `niaga og ew ereh :duluh-iahs`, que es la inversa de *Shai-Hulud: Here We Go Again*, una frase utilizada en la filtración del malware **Shai-Hulud** la semana pasada.
Un informe de la plataforma de seguridad de software **Aikido** señala que hay más de 2.700 repositorios maliciosos en **GitHub** que coinciden con los marcadores de la campaña.
Una búsqueda antes de publicar este artículo muestra que actualmente hay al menos 2.900 repositorios de **GitHub** generados por la última campaña de cadena de suministro **Shai-Hulud**.

Sin embargo, el principal canal de exfiltración es a *filev2.getsession[.]org/file/* a través de la red Session P2P, el endpoint *t.m-kosche.com* para enviar las credenciales robadas.
"En tránsito, este es tráfico cifrado de extremo a extremo en TCP/443, indistinguible del tráfico legítimo de la aplicación Session en la capa de red. No hay un endpoint C2 [comando y control] tradicional para bloquear por nombre de host o IP", dicen los investigadores de **Endor Labs**.
### Paquete de apariencia legítima
Una adición clave nueva que **Endor Labs** observó en esta variante de **Shai Hulud** es su capacidad para generar validas atestaciones de procedencia **Sigstore** abusando de tokens OpenID Connect (OIDC) de entornos CI comprometidos y enviándolos a Fulcio y Reko.
Una capacidad similar se observó en el payload entregado en el ataque a **TanStack** atribuido a TeamPCP, cuando el actor de amenazas publicó versiones de paquetes maliciosos con atestaciones de procedencia verificables de Supply-chain Levels for Software Artifacts (SLSA).
Como resultado, los paquetes npm maliciosos pueden parecer legítimamente firmados y pasar las verificaciones estándar de procedencia a pesar de contener malware que roba credenciales.
La capacidad de autopropagación también está presente en este ataque. El malware valida los tokens npm robados, enumera los paquetes propiedad de la víctima, descarga los tarballs, inyecta el payload malicioso y vuelve a publicar los paquetes infectados con números de versión incrementados.
Dado que el código de **Shai Hulud** fue filtrado recientemente en **GitHub** por el grupo de amenazas TeamPCP y ya ha sido utilizado en ataques, la atribución de la nueva campaña **Shai-Hulud** es más difícil.
### Persistencia a través de VS Code y Claude Code
**Socket** dice que esta variante difiere técnicamente de los payloads Mini **Shai-Hulud** anteriores, pero comparte las mismas características operativas.
“Los payloads de AntV difieren de los artefactos Mini **Shai-Hulud** anteriores, como los payloads router_init.js e Intercom-related router_runtime.js de **TanStack**”, explica **Socket**.
“La muestra de AntV utiliza un index.js a nivel raíz, un endpoint C2 principal diferente y un cuerpo de payload más pequeño. Sin embargo, el modelo operativo central es consistente”.
**Aikido Security** confirma que, si bien el modelo central es el mismo, existen algunas diferencias. El payload ahora es más pequeño y hay persistencia a través de backdoors plantados en configuraciones de VS Code y Claude Code.
Los investigadores advierten que esto puede indicar que "el atacante está pensando en lo que sucede después de que se limpia el compromiso inicial".
La recomendación general para los desarrolladores que descargaron alguno de los paquetes npm infectados es eliminar o degradar inmediatamente a una versión conocida y segura publicada antes del 18 de mayo, y luego revocar y rotar todas las credenciales expuestas (por ejemplo, tokens de **GitHub**, tokens de cloud, claves SSH).
Los informes sobre el ataque de las empresas de seguridad de aplicaciones **Socket**, **Endor Labs**, **Aikido Security** y **Step Security** incluyen indicadores de compromiso junto con consejos de detección, remediación y mitigación que los defensores pueden utilizar para proteger los entornos de desarrollo.
**[ACTUALIZACIÓN: 10:31 EST]:** *Artículo actualizado con información de **Aikido Security** y **Microsoft**.*
[The Validation Gap: Automated Pentesting Answers One Question. You Need Six.](https://hubs.li/Q048zztN0)
Las herramientas de pentesting automatizado brindan valor real, pero fueron diseñadas para responder una pregunta: ¿puede un atacante moverse por la red? No fueron diseñadas para probar si sus controles bloquean amenazas, si sus reglas de detección se activan o si sus configuraciones de nube se mantienen.
Esta guía cubre las 6 superficies que realmente necesita validar.
[Descargar ahora](https://hubs.li/Q048zztN0)