Mini Shai-Hulud asalta npm: ¿tus credenciales de desarrollo están en peligro?
Pixabay.com / Tumisu
¿Imaginas que una librería JavaScript que usas todos los días de repente se convierte en un caballo de Troya? Eso es exactamente lo que está pasando en el ecosistema npm, donde el gusano Mini Shai-Hulud ha desatado su mayor oleada hasta la fecha.
Una hora de caos coordinado
Según el análisis de Socket’s Threat Research Team, el ataque comenzó alrededor de las 01:56 UTC del 19 de mayo. En apenas una hora, se publicaron 639 versiones maliciosas en 323 paquetes únicos relacionados con el ecosistema de visualización de datos AntV. El ataque fue tan coordinado como devastador.
Microsoft, que ya había publicado guías de protección Defender para la campaña más amplia, también proporcionó actualizaciones de su propia investigación a través de X el martes 19 de mayo.
Los paquetes afectados incluyen dependencias de npm con muchas descargas, como echarts-for-react, size-sensor, @antv/scale y timeago.js. La cuenta de mantenedor de npm comprometida, «atool», tenía derechos de publicación en más de 500 paquetes.
Robo de credenciales a gran escala
Cada versión maliciosa añadió un hook preinstall al package.json que ejecuta un paquete Bun ofuscado de 498 KB. ¿Su objetivo? Robar credenciales en la nube, tokens de CI/CD, claves SSH, tokens de cuentas de servicio de Kubernetes y bóvedas de gestores de contraseñas locales.
Aquí está el detalle escalofriante: el payload exfiltró los datos robados a través de repositorios públicos de GitHub creados con tokens robados. Estos repositorios llevaban nombres basados en la terminología del universo de Dune y descripciones que contenían un marcador invertido que decía «Shai-Hulud: Here We Go Again«.
Avital Harel, líder de investigación de seguridad en Upwind, dijo que la operación parecía madura y consciente de las defensas, con atacantes que anticipaban las herramientas utilizadas para detectar y analizar malware.
«La campaña no solo estaba construida para propagarse, sino también para ralentizar el análisis», explicó.
TanStack también en la mira
Pero esta no fue la única víctima. En una ola anterior, el 11 de mayo, la misma campaña comprometió paquetes de TanStack. El atacante publicó 84 versiones maliciosas en 42 paquetes @tanstack/* entre las 19:20 y 19:26 UTC.
Al menos un paquete afectado, @tanstack/react-router, recibe más de 12 millones de descargas semanales, según Socket.
TanStack aclaró que «No se robaron tokens de npm y el flujo de trabajo de publicación de npm en sí no se vio comprometido«. El ataque encadenó el patrón de «Pwn Request» de pull_request_target, el envenenamiento de la caché de GitHub Actions y la extracción en tiempo de ejecución de un token OIDC de la memoria del proceso del runner.
Las versiones de paquetes maliciosos de TanStack contenían un archivo router_init.js recién añadido. Socket lo describió como un payload de 2.3MB fuertemente ofuscado.
Una técnica de entrega ingeniosa y peligrosa
La oleada de AntV extendió una técnica de entrega de payload utilizada en olas anteriores. La gran mayoría de las versiones maliciosas inyectan una entrada optionalDependencies que apunta a commits huérfanos, esta vez plantados en un repositorio de confianza no relacionado, antvis/G2, con autoría falsificada que coincide con un mantenedor real de ese proyecto para desalentar una inspección más detallada.
GitHub almacena los commits en un grupo de objetos compartido en la red de forks de un repositorio, y el resolvedor github: de npm los recupera por hash de commit sin verificar en qué fork vive un commit. Esto permite a un atacante enviar un commit a su propio fork de antvis/G2 y que se sirva desde la URL del repositorio principal.
Isaac Evans, fundador y CEO de la firma de seguridad de software Semgrep, dijo que esta cascada refleja un problema estructural con la forma en que se confía en las dependencias.
«Un paquete en el que has confiado durante años puede convertirse de repente en el mecanismo de entrega», advirtió.
El alcance total de la campaña
Socket describió el tradecraft como consistente con un «patrón de compromiso de npm de alto volumen que implica publicaciones maliciosas coordinadas«.
En todas las oleadas, la empresa ha rastreado 1055 versiones comprometidas en 502 paquetes únicos que abarcan npm, PyPI y Composer.
StepSecurity, que ha registrado más de 2500 repositorios de GitHub que contienen marcadores de campaña, atribuyó la actividad más amplia a un grupo con motivación financiera conocido como TeamPCP.
Wiz también atribuyó la actividad con alta confianza a TeamPCP, vinculándolo a compromisos anteriores que afectaron a SAP, Checkmarx, Bitwarden, Lightning, Intercom y Trivy.
El análisis de Wiz dijo que el payload apunta a tokens de GitHub Actions OIDC, GitLab, CircleCI, AWS, Google Cloud Platform, Azure, Kubernetes, HashiCorp Vault y registros de paquetes.
¿Qué hacer si has sido afectado?
Snyk aconsejó que las organizaciones afectadas traten cualquier secreto accesible durante la instalación como comprometido, incluyendo secretos de GitHub Actions con alcance de organización y tokens OIDC.
Los pasos recomendados incluyen:
- Anclar las dependencias a versiones publicadas antes del 19 de mayo.
- Rotar todas las credenciales expuestas a los entornos de compilación afectados.
- Auditar las cuentas de GitHub para detectar la creación no autorizada de repositorios que coincida con el patrón de nomenclatura temático de Dune y el marcador de cadena invertida de la campaña.
El GitHub Advisory Database calificó el problema de TanStack como crítico y advirtió que cualquier entorno de desarrollo o integración continua que instaló una versión afectada el 11 de mayo de 2026 debe considerarse comprometido.
Aconsejó rotar las credenciales accesibles desde el proceso de instalación y revisar los registros de auditoría en la nube para detectar actividad de los hosts afectados.
Este ataque de cadena de suministro es un claro recordatorio: en el mundo del desarrollo moderno, la confianza es el activo más valioso y el vector de ataque más explotado. ¿Estás seguro de lo que estás instalando?
Sobre el autor
Arquitecto de soluciones IoT dedicado a simplificar la vida moderna. Javier escribe para Byte Horizon sobre cómo integrar ecosistemas inteligentes en el hogar de manera segura y eficiente. Es experto en protocolos de conectividad y en encontrar el equilibrio entre comodidad y ahorro energético.