Gusano mini Shai-Hulud
El grupo de ciberdelincuentes conocido como TeamPCP ha sido vinculado a una sofisticada campaña de ataques a la cadena de suministro dirigida a paquetes npm y PyPI ampliamente utilizados, asociados con TanStack, UiPath, Mistral AI, OpenSearch, Guardrails AI y otros ecosistemas. Esta operación, relacionada con la campaña de malware Mini Shai-Hulud, demuestra una escalada significativa en el abuso de la cadena de suministro de software y en las técnicas de robo de identidad.
Los investigadores identificaron que los paquetes npm maliciosos se modificaron para incluir un componente JavaScript ofuscado llamado router_init.js. Esta carga útil analiza los entornos infectados e implementa un avanzado programa de robo de credenciales dirigido a proveedores de servicios en la nube, monederos de criptomonedas, herramientas de desarrollo de IA, plataformas de mensajería, sistemas de CI/CD y entornos de GitHub Actions. Los datos exfiltrados se transmiten principalmente al dominio filev2.getsession.org.
El uso de la infraestructura del Protocolo de Sesión pone de manifiesto un intento deliberado de eludir los controles de seguridad empresariales. Dado que el dominio pertenece a una plataforma de mensajería descentralizada centrada en la privacidad, es menos probable que sea bloqueado por las defensas de red tradicionales. Como método secundario de exfiltración, los datos cifrados se envían a repositorios controlados por el atacante a través de la API GraphQL de GitHub, utilizando tokens de autenticación de GitHub robados bajo la identidad del autor claude@users.noreply.github.com.
Tabla de contenido
Mecanismos de persistencia y expansión del robo de credenciales
El malware incorpora diversas capacidades de persistencia y vigilancia diseñadas para mantener el acceso a largo plazo a entornos de desarrollo comprometidos. Se establecen mecanismos de persistencia dentro de Claude Code y Microsoft Visual Studio Code, lo que permite que el malware sobreviva a los reinicios del sistema y se reinicie automáticamente cada vez que se abran los entornos de desarrollo integrados (IDE).
Además, se implementa un servicio gh-token-monitor para monitorear y re-exfiltrar continuamente los tokens de GitHub. También se inyectan dos flujos de trabajo maliciosos de GitHub Actions en los repositorios comprometidos. Estos flujos de trabajo serializan los secretos del repositorio en formato JSON y cargan los datos al punto final externo api.masscan.cloud.
La última vulnerabilidad de TanStack difiere significativamente de incidentes anteriores en la cadena de suministro. En lugar de utilizar un gancho de preinstalación, los atacantes insertaron un archivo JavaScript malicioso directamente en los archivos tar de los paquetes, introduciendo una dependencia opcional vinculada a un paquete alojado en GitHub. Dicha dependencia contiene un gancho de ciclo de vida de preparación que ejecuta la carga útil a través del entorno de ejecución Bun.
Los paquetes Mistral AI infectados con troyanos adoptaron una estrategia de infección más antigua al modificar el archivo package.json con un gancho de preinstalación que invoca node setup.mjs. Este proceso descarga Bun y ejecuta el mismo malware de robo de credenciales.
CVE-2026-45321 y el abuso de la publicación de confianza
La vulnerabilidad TanStack ha sido identificada oficialmente como CVE-2026-45321 y se le ha asignado una puntuación crítica CVSS de 9,6. Los investigadores confirmaron que 42 paquetes y 84 versiones dentro del ecosistema TanStack se vieron afectados.
El análisis reveló que la vulnerabilidad se originó a partir de un ataque encadenado a GitHub Actions que explotó el disparador pull_request_target, el envenenamiento de la caché de GitHub Actions y la extracción en tiempo de ejecución de tokens OIDC de los ejecutores de GitHub Actions. Según los informes, los atacantes prepararon cargas útiles maliciosas mediante confirmaciones huérfanas en bifurcaciones de GitHub antes de inyectarlas en los archivos tar de los paquetes npm. Posteriormente, los atacantes secuestraron flujos de trabajo legítimos de TanStack/router para publicar paquetes comprometidos con certificaciones de procedencia SLSA válidas.
Este suceso marca una escalada histórica en los ataques a la cadena de suministro de software. Los paquetes maliciosos portaban firmas de procedencia SLSA Build Level 3 válidas, lo que convierte a este gusano npm en el primero documentado capaz de distribuir paquetes maliciosos con certificados de compilación auténticos. Posteriormente, la campaña de malware se extendió más allá de TanStack y se propagó a ecosistemas mantenidos por UiPath, DraftLab y otros desarrolladores.
La operación abusa gravemente de los flujos de trabajo de publicación de confianza. En lugar de robar directamente las credenciales de npm, el código controlado por el atacante, que se ejecuta dentro de las canalizaciones de CI/CD de confianza, aprovechó los permisos OIDC para generar tokens de publicación de corta duración durante el proceso de compilación. Esto permitió publicar paquetes maliciosos a través de canalizaciones de lanzamiento legítimas, eludiendo las medidas de seguridad de autenticación convencionales.
El comportamiento de autopropagación de los gusanos genera alarma.
Uno de los aspectos más peligrosos de la campaña Mini Shai-Hulud es su modelo de propagación tipo gusano. El malware busca activamente tokens npm publicables configurados con bypass_2fa=true, enumera los paquetes mantenidos por el desarrollador comprometido e intercambia tokens OIDC de GitHub por tokens de publicación por paquete. Este mecanismo permite que el malware se propague lateralmente a través de los ecosistemas de paquetes sin depender de las técnicas tradicionales de robo de credenciales.
El ataque también explotó las configuraciones de confianza a nivel de repositorio dentro del modelo de publicador de confianza OIDC de GitHub. Debido a que la confianza se otorgaba de forma generalizada a nivel de repositorio en lugar de estar restringida a ramas protegidas y archivos de flujo de trabajo específicos, las ejecuciones maliciosas de flujos de trabajo activadas por confirmaciones huérfanas pudieron solicitar tokens de publicación de npm legítimos.
Otra capacidad inquietante implica la implementación de un mecanismo de seguridad. El malware instala un script que consulta repetidamente el punto final api.github.com/user cada 60 segundos para determinar si los tokens npm creados por el atacante siguen activos. Estos tokens llevan la amenazante descripción IfYouRevokeThisTokenItWillWipeTheComputerOfTheOwner (Si revoca este token, borrará el equipo del propietario).
Si los defensores revocan el token a través del panel de control de npm, el malware ejecuta una rutina destructiva con el comando `rm -rf ~/`, transformando la infección en un malware de borrado de datos. Este comportamiento agresivo indica una evolución sustancial en las tácticas operativas de TeamPCP y demuestra una creciente sofisticación en sus métodos de persistencia coercitiva. Por lo tanto, se recomienda a los equipos de seguridad aislar y crear imágenes de los sistemas infectados antes de revocar las credenciales de npm comprometidas.
Paquetes afectados y creciente impacto en el ecosistema
La campaña ha afectado a más de 170 paquetes tanto en npm como en PyPI, sumando en conjunto más de 518 millones de descargas. Los investigadores también identificaron al menos 400 repositorios creados con credenciales robadas, todos con la frase "Shai-Hulud: Aquí vamos de nuevo".
Los paquetes afectados incluyen:
guardrails-ai@0.10.1 (PyPI)
mistralai@2.4.6 (PyPI)
@opensearch-project/opensearch@3.5.3, 3.6.2, 3.7.0, 3.8.0
@squawk/mcp@0.9.5
@squawk/clima@0.5.10
@squawk/flightplan@0.5.6
@tallyui/connector-medusa@1.0.1, 1.0.2, 1.0.3
@tallyui/connector-vendure@1.0.1, 1.0.2, 1.0.3
El malware también emplea múltiples canales de exfiltración redundantes. Además de la infraestructura del Protocolo de Sesión y los puntos de entrega de GitHub, las credenciales robadas se transmiten a través del dominio git-tanstack.com, que ha sido objeto de un squatting.
El malware PyPI introduce una lógica destructiva basada en geolocalización.
Las variantes de malware basadas en Python asociadas con los paquetes maliciosos Mistral AI y Guardrails AI difieren sustancialmente de las cargas útiles de JavaScript distribuidas a través de npm. El paquete PyPI mistralai comprometido descarga un programa para robar credenciales desde el host remoto 83.142.209.194.
Los investigadores descubrieron que el malware Python contiene una lógica que tiene en cuenta el país, diseñada para evitar su ejecución en entornos de habla rusa. También incluye un mecanismo destructivo con geolocalización que introduce una probabilidad de uno entre seis de ejecutar rm -rf / si el sistema infectado parece estar ubicado en Israel o Irán.
Este comportamiento demuestra una preocupante evolución hacia el despliegue de cargas útiles destructivas con conocimiento de la región dentro de los ecosistemas de paquetes de código abierto.
La creciente amenaza de los ataques a la cadena de suministro basados en la suplantación de identidad
La campaña Mini Shai-Hulud refleja una transformación más amplia en los ataques modernos a la cadena de suministro. En lugar de centrarse únicamente en el compromiso de paquetes, los ciberdelincuentes atacan cada vez más las identidades de CI/CD de confianza, los flujos de trabajo de publicación y las canalizaciones de automatización basadas en la nube.
Una vez que los atacantes acceden a la infraestructura de publicación de software, el propio proceso de desarrollo se convierte en el mecanismo de distribución de malware. Dado que muchas acciones maliciosas se producen a través de flujos de trabajo legítimos, certificaciones de confianza y sistemas de lanzamiento auténticos, los controles de seguridad tradicionales pueden no ser capaces de identificar comportamientos maliciosos.
Las características clave que definen esta nueva generación de ataques a la cadena de suministro incluyen:
- Abuso de los mecanismos de publicación confiable y de intercambio de tokens OIDC.
- Propagación a través de flujos de trabajo de CI/CD legítimos y sistemas de compilación.
- Uso de certificaciones SLSA válidas para enmascarar paquetes maliciosos
- Operaciones de exfiltración y persistencia de credenciales multicanal
- Mecanismos de represalia destructivos diseñados para intimidar a los defensores.
La expansión de la campaña a través de herramientas de IA, automatización empresarial, infraestructura de búsqueda, desarrollo frontend, herramientas relacionadas con la aviación y ecosistemas CI/CD demuestra la profunda interconexión que han alcanzado las cadenas de suministro de software. La monitorización del comportamiento durante la instalación de paquetes y la ejecución de compilaciones es ahora cada vez más crucial para detectar amenazas que, a primera vista, parecen legítimas.