
🛡️ Scanner de um comando para CVE-2026-45321 — ataque à cadeia de suprimentos do TanStack npm
Scanner de ataque à cadeia de suprimentos em um comando para CVE-2026-45321 / GHSA-g7cv-rxg3-hmpx
Detecta o worm "Mini Shai-Hulud" que comprometeu 42 pacotes npm @tanstack/* (84 versões maliciosas) em 11 de Maio 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 .
Em 11 de Maio de 2026, um invasor encadeou três classes de vulnerabilidade conhecidas — configuração incorreta de pull_request_target (Pwn Request), envenenamento de cache do GitHub Actions e extração de memória do token OIDC — para publicar 84 versões maliciosas em 42 pacotes @tanstack/* sob a identidade npm confiável do TanStack.
O malware coletou credenciais (tokens GitHub, tokens npm, chaves SSH, AWS/GCP/Kubernetes/Vault), exfiltrou-as através do Session Messenger e se autopropagou para outros pacotes mantidos pela vítima.
A mesma campanha também atingiu Mistral AI (npm + PyPI), UiPath (65 pacotes), OpenSearch (1,3M de downloads semanais no npm) e mais de 170 pacotes npm no total mais 2 pacotes PyPI.
Scanner somente leitura que verifica seu projeto quanto a:
| O quê | Arquivos | Resultado |
|---|---|---|
| lockfile npm | package-lock.json, npm-shrinkwrap.json | 🔴 Correspondência exata de versão maliciosa |
| lockfile pnpm | pnpm-lock.yaml | 🔴 Correspondência exata de versão maliciosa |
| lockfile yarn | yarn.lock | 🔴 Correspondência exata de versão maliciosa |
| dependências do manifesto | package.json (raiz + workspaces) | 🟡 Aviso de presença de pacote |
| impressão digital de malware | @tanstack/setup em optionalDependencies | 🔴 Malware confirmado |
| dependências git suspeitas | github:tanstack/router#<commit> | 🔴 Malware confirmado |
| scripts de ciclo de vida | prepare com bun + router_init | 🔴 Malware confirmado |
| node_modules | node_modules/@tanstack/* (fallback) | 🔴 Correspondência exata de versão |
Nota: Os lockfiles são verificados apenas na raiz do projeto. Se você estiver usando um monorepo com lockfiles em subdiretórios (ex.: packages/web/package-lock.json), execute o scanner dentro de cada workspace, ou a partir da raiz do monorepo onde o lockfile de nível superior reside.
@tanstack/* encontrado no package.json. Verifique seu lockfile.⚠️ Crucial: este malware é um LADRÃO DE CREDENCIAIS, não um vírus que destrói PCs. Se 🔴 for detectado:
curl -fsSL https://raw.githubusercontent.com/Caixa-git/tanstack-shield/main/tanstack-shield.sh | bash -s -- --json
Esta ferramenta é somente leitura. Ela nunca cria, modifica ou exclui arquivos no seu sistema.
MIT