
🛡️ Однокомандный сканер для CVE-2026-45321 — атака на цепочку поставок TanStack npm
Однокомандный сканер атак на цепочку поставок для CVE-2026-45321 / GHSA-g7cv-rxg3-hmpx
Обнаруживает червя «Mini Shai-Hulud», который скомпрометировал 42 пакета @tanstack/* npm (84 вредоносные версии) 11 мая 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 .
11 мая 2026 года злоумышленник объединил три известных класса уязвимостей — неправильную настройку pull_request_target (Pwn Request), отравление кэша GitHub Actions и извлечение токенов OIDC из памяти — чтобы опубликовать 84 вредоносные версии в 42 пакетах @tanstack/* под доверенной npm-идентичностью TanStack.
Вредоносное ПО собирало учётные данные (токены GitHub, токены npm, SSH-ключи, AWS/GCP/Kubernetes/Vault), выводило их через мессенджер Session и самораспространялось на другие пакеты, которые поддерживала жертва.
Та же кампания также затронула Mistral AI (npm + PyPI), UiPath (65 пакетов), OpenSearch (1,3 млн еженедельных загрузок npm) и более 170 пакетов npm плюс 2 пакета PyPI.
Сканер только для чтения, который проверяет ваш проект на наличие:
Примечание: Lockfiles сканируются только в корне проекта. Если вы используете монорепозиторий с lock-файлами в подкаталогах (например, packages/web/package-lock.json), запустите сканер внутри каждой рабочей области или из корня монорепозитория, где находится основной lock-файл.
@tanstack/* найден в package.json. Проверьте ваш lock-файл.⚠️ Важно: это вредоносное ПО — КРАДУЩЕЕ УЧЁТНЫЕ ДАННЫЕ, а не вирус, уничтожающий ПК. Если обнаружен 🔴:
curl -fsSL https://raw.githubusercontent.com/Caixa-git/tanstack-shield/main/tanstack-shield.sh | bash -s -- --json
Этот инструмент только для чтения. Он никогда не создаёт, не изменяет и не удаляет файлы в вашей системе.
MIT
| Что | Файлы | Результат |
|---|
| npm lockfile | package-lock.json, npm-shrinkwrap.json | 🔴 Точное совпадение вредоносной версии |
| pnpm lockfile | pnpm-lock.yaml | 🔴 Точное совпадение вредоносной версии |
| yarn lockfile | yarn.lock | 🔴 Точное совпадение вредоносной версии |
| манифест зависимостей | package.json (корень + рабочие области) | 🟡 Предупреждение о наличии пакета |
| отпечаток вредоносного ПО | @tanstack/setup в optionalDependencies | 🔴 Подтверждённое вредоносное ПО |
| подозрительные git-зависимости | github:tanstack/router#<commit> | 🔴 Подтверждённое вредоносное ПО |
| жизненные циклы скриптов | prepare с bun + router_init | 🔴 Подтверждённое вредоносное ПО |
| node_modules | node_modules/@tanstack/* (запасной вариант) | 🔴 Точное совпадение версии |