
Обнаружение компрометации цепочки поставок CVE-2026-45321 Mini Shai-Hulud — сканирует 170 отравленных пакетов npm и 2 PyPI в TanStack, Mistral AI, UiPath, OpenSearch, Guardrails AI
Быстрый сканер Bash с нулевыми зависимостями для обнаружения, затронута ли ваша машина атакой на цепочку поставок CVE-2026-45321 "Mini Shai-Hulud".
11 мая 2026 года более 170 пакетов npm и 2 пакета PyPI из TanStack, Mistral AI, UiPath, OpenSearch и Guardrails AI были одновременно отравлены. Вредоносная полезная нагрузка похищает учетные данные AWS, токены GitHub, токены npm, секреты Vault и ключи SSH — и включает самораспространяющегося червя, который распространяется через конвейеры CI/CD.
curl -fsSL https://raw.githubusercontent.com/qi-scape/scan-shai-hulud/main/scan-shai-hulud.sh | bash
Или клонируйте и выполните:
git clone https://github.com/qi-scape/scan-shai-hulud.git
cd scan-shai-hulud
chmod +x scan-shai-hulud.sh
./scan-shai-hulud.sh
# Scan current directory + system-wide persistence checks
./scan-shai-hulud.sh
# Scan a specific project
./scan-shai-hulud.sh ~/my-project
# Deep scan across entire home directory
./scan-shai-hulud.sh --full
Сканер выполняет 8 шагов:
170 пакетов npm в 15 скоупах:
react-router, vue-router, solid-router, router-core и т.д.)mistralai, mistralai-azure, mistralai-gcpopensearchagentwork-cli, cmux-agent-mcp, cross-stitch, , , , , , , 2 пакета PyPI:
mistralai==2.4.6guardrails-ai==0.10.1Если сканер сообщает о КРИТИЧЕСКИХ находках:
ghp_*, gho_*, ghs_*), токены npm, токены Vault, ключи SSH, токены сервисных учетных записей Kubernetesnpm cache clean --force && rm -rf node_modules && npm installlaunchctl unload ~/Library/LaunchAgents/com.user.gh-token-monitor.plist2026-05-11T19:20Znpm access ls-packagesfind, grep, shasum)mdfind (macOS Spotlight, используется для более быстрого поиска файлов)npm, pip (для проверки пакетов/токенов)git (для проверки репозиториев)lsof (для проверки сетевых соединений)MIT
| Шаг | Описание |
|---|
| Сохранение | macOS LaunchAgent (файл + состояние загрузки launchctl), служба systemd Linux, скрипт-выключатель мертвеца, сброс полезной нагрузки в .claude/ и .vscode/, внедренные рабочие процессы GitHub Actions, дропперы в /tmp |
| Вредоносные файлы | router_init.js, tanstack_runner.js, router_runtime.js, gh-token-monitor.sh, transformers.pyz — проверены по 3 известным хешам SHA-256 |
| Индикаторы C2 | Сканирует конфигурационные файлы (.npmrc, .bashrc, .zshrc, .env) и исходный код проекта на наличие 6 доменов C2 + маркеров кампании |
| Пакеты npm | Все деревья node_modules, глобальный корень npm, lockfiles (package-lock.json, yarn.lock, pnpm-lock.yaml, bun.lock), кеш npm — с точным сопоставлением по пакетам (42 конкретных пакета @tanstack router, а не весь скоуп) |
| Пакеты PyPI | pip show во всех окружениях Python/conda + requirements.txt, pyproject.toml, Pipfile, poetry.lock |
| Git-репозитории | Вредоносный хеш коммита в истории, ветки dead-drop dependabout/*/setup-formatter, автор коммита dead-drop, внедренный codeql_analysis.yml |
| История оболочки и окружение | История Bash/Zsh/Fish для следов выполнения полезной нагрузки, файлы RC оболочки для инъекций, переменные окружения для доменов C2 |
| Сеть и токены | Активные соединения с C2 через lsof, /etc/hosts, ~/.ssh/known_hosts, список токенов npm |
git-branch-selectorgit-git-gitml-toolkit-tsnextmove-mcpsafe-actionts-dnawot-api| Индикатор | Значение |
|---|
| Первичная эксфильтрация | filev2.getsession.org |
| Семена сессии | seed{1,2,3}.getsession.org |
| Вторичный C2 | api.masscan.cloud, git-tanstack.com |
| Размещение полезной нагрузки | litter.catbox.moe/h8nc9u.js, litter.catbox.moe/7rrc6l.mjs |
| Вредоносный коммит | 79ac49eedf774dd4b0cfa308722bc463cfe5885c |