
Сканер для червя цепочки поставок 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, или . Это подтверждённые отравленные пространства имён. Всего 149 пакетов, на данный момент отслеживается более 400 вредоносных версий.
lightningtelnyxMini 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-домены |
| Волна | Дата | Пакеты | Издатель |
|---|---|---|---|
| TanStack | Май 2026 | 43 пакета @tanstack/* | voicproducoes |
| UiPath / JFrog | Май 2026 | 66 пакетов @uipath/* | voicproducoes / zblgg |
| SAP @cap-js | Апрель 2026 | @cap-js/db-service, @cap-js/sqlite, @cap-js/postgres, mbt | cloudmtabot |
| PyPI | Февраль–Апрель 2026 | litellm, telnyx, lightning, mistralai, guardrails-ai | различные |
Важно: успешная проверка npm audit signatures не означает, что вы в безопасности. Mini Shai-Hulud — первая задокументированная атака, генерирующая действительную аттестацию SLSA Build Level 3 через захват пайплайна GitHub Actions OIDC. Подписи проверяют происхождение сборки, а не то, что сам пайплайн сборки был чист.
Червь использует трехуровневую обфускацию: obfuscator.io, затем шифр подстановки Фишера-Йетса (PBKDF2-SHA256, 200 000 итераций), затем AES-256-GCM. Он эксфильтрует учётные данные через CDN Session Protocol, мёртвые точки GraphQL GitHub, контейнер блокчейна ICP и стеганографию WAV.
Постоянство устанавливается как macOS LaunchAgent, systemd-модуль Linux, Scheduled Task Windows или ключ HKCU Run, хук SessionStart Claude Code, задача folderOpen VS Code и файл запуска Python .pth. На скомпрометированных CI-раннерах он устанавливает Kubernetes DaemonSet.
Токен-ловушка (IfYouRevokeThisTokenItWillWipeTheComputerOfTheOwner) связан с демоном gh-token-monitor, который опрашивает api.github.com/user каждые 60 секунд. Ответ 40x вызывает rm -rf ~/ на Linux/macOS или эквивалент на Windows.
Собраны из GHSA-g7cv-rxg3-hmpx, JFrog Security Research, StepSecurity, Socket.dev, Wiz Threat Research, Snyk, Aikido Security, Orca Security, Mend.io (по состоянию на 2026-05-13).
Правила обнаружения: Sigma 5299fadf-f228-4526-8274-251db1960be9 (Shai-Hulud Malicious Bun Execution), сигнатура Palo Alto ATP 87120.
Intrudify специализируется на реагировании на инциденты в цепочках поставок npm/PyPI, захватах CI/CD-пайплайнов и злоупотреблении токенами OIDC в GitHub Actions.
Контакты: [email protected] · intrudify.com
| 19 | Расширенное постоянство | Маскировка под службу sysmon/pgmon, litellm_init.pth, Kubernetes DaemonSet, стеганография WAV |