
Однокомандный сканер для червя npm цепочки поставок Mini Shai-Hulud (CVE-2026-45321). Обнаружение до ротации токенов.
Однокомандный сканер для атаки на цепочку поставок npm Mini Shai-Hulud (CVE-2026-45321, CVSS 9.6).
Червь устанавливает демон персистентности (gh-token-monitor), который выполняет rm -rf ~ при обнаружении отзыва учетных данных. Не ротируйте свой GitHub PAT или npm токен, пока не убедитесь, что демон удален. Обнаружение → удаление демона → затем ротация.
curl -fsSL https://raw.githubusercontent.com/prashanthnataraj/mini-shai-hulud-detector/main/shai-hulud-detector.sh | bash
Или сначала скачайте и проверьте (рекомендуется для любого скрипта, который вы передаете в оболочку):
curl -fsSL https://raw.githubusercontent.com/prashanthnataraj/mini-shai-hulud-detector/main/shai-hulud-detector.sh -o shai-hulud-detector.sh
# Прочитайте. Затем:
bash shai-hulud-detector.sh
| Код | Результат |
|---|---|
0 | ЧИСТО — индикаторы не найдены |
1 | ПОДОЗРИТЕЛЬНО — требуется ручная проверка |
2 | ЗАРАЖЕНО — строго соблюдайте порядок устранения (см. вывод скрипта) |
Отсутствующий
package-lock.jsonпо замыслу возвращает ПОДОЗРИТЕЛЬНО — запустите сканирование послеnpm install.
npm install, npm uninstall или git push.rm -rf node_modules && npm install --ignore-scripts.Добавьте в .npmrc:
ignore-scripts=true
minimum-release-age=4320
Закрепите все GitHub Actions за полным хешем коммита, а не за версионным тегом.
Написан после того, как команда Lume AI столкнулась с реальной атакой CVE-2026-45321 в мае 2026 года. Скрипт предназначен только для чтения — никаких сетевых вызовов после загрузки, никакой записи на диск. Перед запуском ознакомьтесь с исходным кодом.
MIT — см. LICENSE.
| Шаг | Проверка |
|---|
| 1 | Фиктивный пакет @tanstack/setup в package-lock.json |
| 2 | Известные вредоносные файлы полезной нагрузки (router_init.js, tanstack_runner.js) |
| 3 | SHA-256 хеши полезной нагрузки по списку известных вредоносных |
| 4 | Демон персистентности gh-token-monitor (LaunchAgent / systemd / pgrep) |
| 5 | Неожиданные хуки PreToolUse / PostToolUse в ~/.claude/settings.json |
| 6 | Триггеры pull_request_target и незакрепленные ссылки на действия в .github/workflows |