
Сканер для червя цепочки поставок Mini Shai-Hulud npm/PyPI (NHS CC-4781 · CVE-2026-45321). Обнаруживает персистентность gh-token-monitor, артефакты полезной нагрузки и коммиты злоумышленника. Python, Bash, PowerShell.
Бесплатный офлайн-сканер для червя, поражающего цепочки поставок npm/PyPI, который в настоящее время уничтожает основные пакеты. Создан командой Intrudify. Без регистрации, без телеметрии, работает полностью офлайн.
NHS CC-4781 · CVE-2026-45321 (CVSS 9.6) · GHSA-g7cv-rxg3-hmpx
Если вы запускали npm install или pip install в последние несколько недель, это для вас.
Особенно если вы использовали @tanstack/*, @uipath/*, @mistralai/*, @cap-js/* или PyPI-пакеты litellm, mistralai, guardrails-ai, lightning или telnyx. Это подтверждённые отравленные пространства имён. Всего 149 пакетов, на данный момент отслеживается более 400 вредоносных версий.
Mini Shai-Hulud — это червь, наносящий ущерб. Он крадёт ваши учётные данные npm и GitHub, устанавливает постоянное присутствие в macOS, Linux и Windows и (та часть, которую большинство упускают) оставляет после себя токен-ловушку. Если отозвать его на заражённой машине, это вызовет rm -rf ~/. Ваша домашняя папка исчезнет. Порядок очистки важен.
Этот сканер проверяет все 19 известных индикаторов компрометации: пакеты, файлы блокировок, механизмы сохранения, хеши полезных нагрузок, C2-трафик, историю git и CI-среды. Он только читает. Он никогда не записывает, не удаляет и не отправляет данные домой.
Три скрипта, одна задача: Python, Bash, PowerShell. Выберите тот, который подходит для вашего стека.
Intrudify — первый в Европе полностью автономный AI-пентестер для веб-приложений. Суть проста: тот же результат, что и от команды пентестеров за 30 000 $, но за часы вместо недель, с готовым к аудиту отчётом и пошаговыми рекомендациями по устранению для NIS2, SOC2 и ISO27001. Если вы поставляете код и у вас нет команды безопасности, это пробел, который мы закрываем.
Этот сканер — одна из составляющих. Он бесплатен, потому что черви цепочек поставок распространяются быстрее, чем процессы закупок. Разработчику, смотрящему на ленту CVE в 23:00, не нужен звонок от отдела продаж. Ему нужен инструмент, который работает 30 секунд и говорит, всё ли в порядке.
Для активных компрометаций (захват CI/CD-пайплайнов, злоупотребление токенами OIDC в GitHub Actions, реагирование на инциденты в цепочке поставок npm/PyPI) обращайтесь напрямую: [email protected]
Если вы устанавливали npm или PyPI пакеты в последние несколько недель, особенно что-то из @tanstack/*, @uipath/*, @mistralai/*, @cap-js/* или PyPI-пакетов litellm, mistralai, guardrails-ai, lightning или telnyx, ваша машина может быть скомпрометирована.
Червь Mini Shai-Hulud крадёт учётные данные, устанавливает постоянное присутствие в macOS, Linux и Windows и может уничтожить вашу домашнюю папку, если вы проведёте очистку в неправильном порядке.
Этот сканер проверяет все 19 известных индикаторов. Он только читает. Он никогда не записывает, не удаляет и не отправляет ничего с вашей машины.
Червь устанавливает токен npm-ловушку. Его отзыв на заражённой машине вызывает rm -rf ~/. Порядок важен.
Если сканер находит КРИТИЧНЫЕ результаты, делайте это по порядку:
| Вы на... | Используйте это |
|---|---|
| macOS или Linux | scan_cc4781.sh (или scan_cc4781.py, если предпочитаете Python) |
| Windows | scan_cc4781.ps1 (или scan_cc4781.py с нативным Python) |
| CI / Docker | scan_cc4781.py или scan_cc4781.sh |
# macOS / Linux
chmod +x scan_cc4781.sh
./scan_cc4781.sh --deep
# Windows PowerShell
.\scan_cc4781.ps1 -Deep
# Python (любая ОС)
python3 scan_cc4781.py --deep
Флаг --deep / -Deep рекурсивно обходит все node_modules в текущем каталоге. Рекомендуется, если у вас монорепозиторий или несколько проектов.
Если PowerShell блокирует скрипт:
powershell -ExecutionPolicy Bypass -File .\scan_cc4781.ps1 -Deep
RESULT: 0 CRITICAL / 0 HIGH → вы чисты
RESULT: X CRITICAL / Y HIGH → остановитесь и выполните указанные выше шаги, прежде чем делать что-либо ещё
CRITICAL = подтверждённый индикатор компрометации. Действуйте немедленно.
HIGH = подозрительно. Проверьте. Некоторые HIGH-находки являются ожидаемыми ложными срабатываниями (см. ниже).
CC-4781 / Mini Shai-Hulud Supply-Chain Attack Scanner
Host: your-hostname OS: your-os
Checking 149 npm packages (400+ malicious versions), 5 PyPI packages
[OK] gh-token-monitor process not detected
[HIGH] payload-artefact: sysmon.py -> .../coverage/sysmon.py <- false positive: Python coverage package
[HIGH] payload-artefact: execution.js -> .../n8n/.../execution.js <- false positive: n8n
[OK] git-tanstack.com does not resolve
[OK] No malicious optionalDependencies github: references found
[OK] No attacker exfil commits in git log
RESULT: 0 CRITICAL / 4 HIGH
Находки HIGH для sysmon.py и execution.js — это ложные срабатывания: имена файлов совпадают с именами полезных нагрузок червя, но SHA-256 хеши не совпадают. CRITICAL срабатывает только при совпадении хеша с подтверждённой вредоносной нагрузкой.
| Флаг | Bash / Python | PowerShell | Что делает |
|---|---|---|---|
| Глубокое сканирование | --deep | -Deep | Рекурсивно обходит все node_modules в текущем каталоге |
| Целевой каталог | --npm-dir /path | -NpmDir C:\path | Сканирует конкретную папку node_modules |
| JSON-вывод | --json | -Json | Машиночитаемый вывод для SIEM / SOAR |
Формат JSON-вывода: { "host": "...", "findings": [{ "severity": "CRITICAL|HIGH", "category": "...", "detail": "...", "path": "..." }] }
| № | Категория | Что ищет |
|---|---|---|
| 1 | Версии npm | 149 пакетов, более 400 подтверждённых вредоносных точных версий |
| 2 | Файлы блокировок | package-lock.json, pnpm-lock.yaml, yarn.lock |
| 3 | PyPI | litellm, telnyx, lightning, mistralai, guardrails-ai |
| 4 | Постоянство | macOS LaunchAgent, Linux systemd, Windows Scheduled Task + ключ HKCU Run |
| 5 | Постоянство | Хук SessionStart Claude Code, задача folderOpen VS Code |
| 6 | Файлы нагрузок | 13 имён файлов + SHA-256 по 11 известным плохим хешам |
| 7 | C2-хосты | 11 доменов в /etc/hosts, переменные окружения прокси, WinHTTP |
| 8 | C2 DNS | Разрешает все 11 C2-доменов |
| 9 | C2-соединения | Активные TCP-соединения с 5 отслеживаемыми C2-IP |
| 10 | package.json | Внедрение optionalDependencies github:tanstack/router |
| 11 | package.json | Внедрение prepare: bun run tanstack_runner.js |
| 12 | Workflows | .github/workflows/codeql_analysis.yml, format-check.yml |
| 13 | Git log | Коммиты эксфильтрации атакующего ([email protected]) |
| 14 | Git-ветки | Тематические ветки червя Dune, тайпосквоттинг dependabout/ |
| 15 | npm токены | Обнаружение RANSOM TOKEN |
| 16 | История shell | C2-домены, IP, имена файлов нагрузок |
| 17 | CI-среда | Утечка учётных данных GitHub Actions |
| 18 | Git-удалённые репозитории | Аккаунты атакующего и C2-домены |
| 19 | Расширенное постоянство | Маскировка под службу sysmon/pgmon, litellm_init.pth, Kubernetes DaemonSet, стеганография WAV |