
🛡️ Scanner in un unico comando per CVE-2026-45321 — attacco alla supply chain di TanStack npm
Scanner di attacchi alla catena di fornitura con un comando per CVE-2026-45321 / GHSA-g7cv-rxg3-hmpx
Rileva il worm "Mini Shai-Hulud" che ha compromesso 42 pacchetti @tanstack/* npm (84 versioni malevole) l'11 maggio 2026.
# Una riga: scansiona il tuo progetto
curl -fsSL https://raw.githubusercontent.com/Caixa-git/tanstack-shield/main/tanstack-shield.sh | bash
# Scansiona una directory specifica
curl -fsSL https://raw.githubusercontent.com/Caixa-git/tanstack-shield/main/tanstack-shield.sh | bash -s -- /path/to/project
# Scarica e usa direttamente
git clone https://github.com/Caixa-git/tanstack-shield.git
cd tanstack-shield
python3 tanstack-shield.py .
L'11 maggio 2026, un attaccante ha concatenato tre classi di vulnerabilità note — configurazione errata di pull_request_target (Pwn Request), avvelenamento della cache di GitHub Actions ed estrazione di token OIDC dalla memoria — per pubblicare 84 versioni malevole in 42 pacchetti @tanstack/* sotto l'identità npm attendibile di TanStack.
Il malware raccoglieva credenziali (token GitHub, token npm, chiavi SSH, AWS/GCP/Kubernetes/Vault), le esfiltrava tramite Session messenger e si propagava ad altri pacchetti gestiti dalla vittima.
La stessa campagna ha colpito anche Mistral AI (npm + PyPI), UiPath (65 pacchetti), OpenSearch (1,3 milioni di download npm settimanali) e oltre 170 pacchetti npm totali più 2 pacchetti PyPI.
Scanner in sola lettura che controlla il tuo progetto per:
| Cosa | File | Risultato |
|---|---|---|
| Lockfile npm | package-lock.json, npm-shrinkwrap.json | 🔴 Rilevamento esatto versione malevola |
| Lockfile pnpm | pnpm-lock.yaml | 🔴 Rilevamento esatto versione malevola |
| Lockfile yarn | yarn.lock | 🔴 Rilevamento esatto versione malevola |
| Dipendenze manifest | package.json (root + workspaces) | 🟡 Avviso presenza pacchetto |
| Impronta malware | @tanstack/setup in optionalDependencies | 🔴 Malware confermato |
| Dipendenze git sospette | github:tanstack/router#<commit> | 🔴 Malware confermato |
| Script di lifecycle | prepare con bun + router_init | 🔴 Malware confermato |
| node_modules | node_modules/@tanstack/* (fallback) | 🔴 Rilevamento esatto versione |
Nota: I lockfile vengono scansionati solo nella root del progetto. Se usi un monorepo con lockfile in sottodirectory (ad es. packages/web/package-lock.json), esegui lo scanner all'interno di ogni workspace, oppure dalla root del monorepo dove risiede il lockfile di primo livello.
@tanstack/* trovato in package.json. Controlla il tuo lockfile.⚠️ Cruciale: questo malware è un LADRO DI CREDENZIALI, non un virus che distrugge il PC. Se viene rilevato 🔴:
curl -fsSL https://raw.githubusercontent.com/Caixa-git/tanstack-shield/main/tanstack-shield.sh | bash -s -- --json
Questo strumento è sola lettura. Non crea, modifica o elimina mai file nel tuo sistema.
MIT