Una nueva ola de la campaña de cadena de suministro Shai-Hulud ha comprometido cientos de paquetes en los repositorios npm y PyPI, distribuyendo malware diseñado para robar credenciales de desarrolladores. El ataque, atribuido al grupo TeamPCP, aprovecha tokens OIDC (OpenID Connect) válidos para publicar versiones maliciosas con atestaciones de procedencia verificables (SLSA Build Level 3), lo que dificulta su detección.
Detalles del ataque
La campaña comenzó comprometiendo docenas de paquetes de TanStack y Mistral AI, pero se extendió rápidamente a otros proyectos populares como Guardrails AI, UiPath y OpenSearch. Según la firma de seguridad StepSecurity, el atacante publicó los paquetes infectados a través del pipeline CI/CD legítimo, llevando atestaciones SLSA Build Level 3 válidas emitidas por la infraestructura de firma de npm y vinculadas al flujo de trabajo legítimo de TanStack/router. Endor Labs reporta más de 160 paquetes comprometidos en npm, Aikido registró 373 entradas de versiones maliciosas, y Socket detectó 416 artefactos comprometidos entre npm y PyPI. TanStack confirmó en su análisis post-mortem que los atacantes encadenaron tres vulnerabilidades: un flujo de trabajo riesgoso 'pull_request-target', envenenamiento de caché de GitHub Actions y robo de tokens OIDC de la memoria del runner.
Desde la perspectiva de un desarrollador, los paquetes parecían criptográficamente auténticos, sin indicios de compromiso.
Endor Labs destaca un truco con commits: los atacantes abusaron de un commit huérfano enviado a un fork del repositorio TanStack/router, haciéndolo accesible a través del almacenamiento compartido de objetos de GitHub aunque no perteneciera a ninguna rama. El commit se referenciaba mediante una dependencia opcional maliciosa, lo que provocaba que npm descargara y ejecutara código controlado por el atacante durante la instalación del paquete.
Malware y exfiltración
El malware se dirige a secretos de desarrolladores, incluyendo tokens OIDC de GitHub Actions, tokens de acceso personal (PAT), credenciales Git, tokens de publicación npm, credenciales de AWS Secrets Manager, IAM y ESC, tokens de cuenta de servicio de Kubernetes, tokens de HashiCorp Vault, claves SSH, configuraciones de Claude Code, tareas de VS Code y archivos .env. StepSecurity indica que el payload lee la memoria del proceso de GitHub Actions para recolectar credenciales de más de 100 rutas de archivos asociadas con proveedores de nube, tokens de criptomonedas y aplicaciones de mensajería. Para exfiltrar la información, el malware utiliza la red P2P Session, lo que hace que el tráfico parezca de mensajería cifrada, complicando la detección y el bloqueo. Una vez infectado, el malware se escribe en los hooks de Claude Code y en las tareas de ejecución automática de VS Code, por lo que desinstalar los paquetes maliciosos no lo elimina.
Carga útil en Mistral AI
Microsoft Threat Intelligence analizó el payload entregado a través de un paquete malicioso de Mistral AI en PyPI, nombrado 'transformers.pyz', que podría suplantar a la biblioteca Transformers de Hugging Face. El payload descarga un malware robacredenciales en sistemas Linux, con geofencing básico que evita ejecutarse en hosts con configuración de idioma ruso. Además, incluye una rutina destructiva probabilística: en entornos que parecen originarse de Israel o Irán, el malware puede ejecutar un borrado recursivo (rm -rf/) con una probabilidad de 1 en 6, similar a la campaña CanisterWorm de TeamPCP.
Recomendaciones para desarrolladores
- Verificar las versiones de paquetes afectados
- Revisar la persistencia en máquinas de desarrollo
- Rotar todas las credenciales expuestas (tokens de GitHub, npm, AWS, Vault, cuentas de servicio de Kubernetes y secretos CI/CD)
- Auditar directorios IDE en busca de archivos maliciosos que sobrevivan a npm install (por ejemplo, router_runtime.js o setup.mjs)
- Bloquear la infraestructura de comando y control del actor de amenazas (api.masscan.cloud, git-tanstack.com y *.getsession.org) a nivel DNS o proxy
Snyk recomienda verificar la procedencia y agregar una capa de análisis de comportamiento en tiempo de instalación, junto con una verificación basada en firmas. A largo plazo, sugiere aplicar instalaciones solo con lockfile para evitar actualizaciones automáticas de paquetes.


















Deja una respuesta