
🛡️ Escáner de un solo comando para CVE-2026-45321 — Ataque a la cadena de suministro npm de TanStack
Escáner de ataques a la cadena de suministro con un solo comando para CVE-2026-45321 / GHSA-g7cv-rxg3-hmpx
Detecta el gusano "Mini Shai-Hulud" que comprometió 42 paquetes npm @tanstack/* (84 versiones maliciosas) el 11 de mayo de 2026.
# One line — scan your project
curl -fsSL https://raw.githubusercontent.com/Caixa-git/tanstack-shield/main/tanstack-shield.sh | bash
# Scan specific directory
curl -fsSL https://raw.githubusercontent.com/Caixa-git/tanstack-shield/main/tanstack-shield.sh | bash -s -- /path/to/project
# Download and use directly
git clone https://github.com/Caixa-git/tanstack-shield.git
cd tanstack-shield
python3 tanstack-shield.py .
El 11 de mayo de 2026, un atacante encadenó tres clases de vulnerabilidades conocidas — configuración incorrecta de pull_request_target (Pwn Request), envenenamiento de caché de GitHub Actions y extracción de tokens OIDC de memoria — para publicar 84 versiones maliciosas en 42 paquetes @tanstack/* bajo la identidad npm de confianza de TanStack.
El malware recolectaba credenciales (tokens de GitHub, tokens npm, claves SSH, AWS/GCP/Kubernetes/Vault), las exfiltraba a través de Session messenger y se autopropagaba a otros paquetes que la víctima mantenía.
La misma campaña también afectó a Mistral AI (npm + PyPI), UiPath (65 paquetes), OpenSearch (1.3M de descargas semanales de npm) y más de 170 paquetes npm además de 2 paquetes PyPI.
Escáner de solo lectura que verifica tu proyecto en busca de:
| Qué | Archivos | Resultado |
|---|---|---|
| Archivo de bloqueo npm | package-lock.json, npm-shrinkwrap.json | 🔴 Coincidencia exacta de versión maliciosa |
| Archivo de bloqueo pnpm | pnpm-lock.yaml | 🔴 Coincidencia exacta de versión maliciosa |
| Archivo de bloqueo yarn | yarn.lock | 🔴 Coincidencia exacta de versión maliciosa |
| Dependencias del manifiesto | package.json (raíz + workspaces) | 🟡 Advertencia de presencia de paquete |
| Huella de malware | @tanstack/setup en optionalDependencies | 🔴 Malware confirmado |
| Dependencias git sospechosas | github:tanstack/router#<commit> | 🔴 Malware confirmado |
| Scripts de ciclo de vida | prepare con bun + router_init | 🔴 Malware confirmado |
| node_modules | node_modules/@tanstack/* (respaldo) | 🔴 Coincidencia exacta de versión |
Nota: Los archivos de bloqueo solo se escanean en la raíz del proyecto. Si estás usando un monorepo con archivos de bloqueo en subdirectorios (ej. packages/web/package-lock.json), ejecuta el escáner dentro de cada workspace, o desde la raíz del monorepo donde se encuentra el archivo de bloqueo de nivel superior.
@tanstack/* en package.json. Revisa tu archivo de bloqueo.⚠️ Crucial: este malware es un ROBADOR DE CREDENCIALES, no un virus que dañe el PC. Si se detecta 🔴:
curl -fsSL https://raw.githubusercontent.com/Caixa-git/tanstack-shield/main/tanstack-shield.sh | bash -s -- --json
Esta herramienta es de solo lectura. Nunca crea, modifica ni elimina archivos en tu sistema.
MIT