Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
tanscript-exploit-check — Проверка IOC для атаки на цепочку поставок npm TanStack/Mini Shai-Hulud (CVE-2026-45321) | Kitploit
Инструменты/GitHubGitHub/nkopylov/tanscript-exploit-check
Управление индикаторами компрометации (IOC)Анализ уязвимостейФорензикаРазведка угрозБезопасность Цепочки ПоставокРеагирование на Инциденты
GitHubnkopylov/tanscript-exploit-check

tanscript-exploit-check

Проверка IOC для атаки на цепочку поставок npm TanStack/Mini Shai-Hulud (CVE-2026-45321)

Репозиторий
143 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Mini Shai-Hulud Supply Chain Attack — IOC Checker

root@kitploit:~
curl -fsSL https://raw.githubusercontent.com/nkopylov/tanscript-exploit-check/main/check-tanstack-exploit.sh | bash

Или склонируйте репозиторий и запустите локально:

root@kitploit:~
git clone https://github.com/nkopylov/tanscript-exploit-check.git
cd tanscript-exploit-check
./check-tanstack-exploit.sh [project_dir ...]

Что произошло

Этот чекер покрывает две волны кампании атаки на цепочку поставок Mini Shai-Hulud от TeamPCP:

Волна 1: Компрометация CI/CD TanStack (11 мая 2026)

11 мая 2026 (19:20–19:26 UTC) злоумышленник опубликовал 84 вредоносные версии в 42 npm-пакетах @tanstack/* за 6-минутное окно. Атака также затронула пакеты Mistral AI, UiPath, OpenSearch и другие — в общей сложности более 170 пакетов в npm и PyPI.

Учётные данные мейнтейнеров не были похищены. Атакующий использовал саму цепочку доверия CI/CD через атаку в 3 этапа:

  1. Эксплуатация pull_request_target — одноразовый GitHub-форк открыл PR, который выполнял код атакующего в контексте безопасности базового репозитория
  2. Отравление кэша GitHub Actions — код из форка отравил общий pnpm-кэш, который позже заразил легитимные релизные workflow
  3. Извлечение OIDC-токенов из памяти процесса — вредоносный код извлекал npm-токены публикации напрямую из памяти раннера GitHub Actions, создавая пакеты с валидными аттестациями происхождения SLSA Build Level 3

Волна 2: Взлом npm-аккаунта «atool» (19 мая 2026)

19 мая 2026 (01:39–02:06 UTC) скомпрометированный npm-аккаунт atool ([email protected]) опубликовал 637 вредоносных версий в 314 пакетах двумя автоматизированными волнами. Цели с высоким влиянием включают:

  • size-sensor (4,2 млн загрузок/месяц)
  • echarts-for-react (3,8 млн загрузок/месяц)
  • @antv/scale (2,2 млн загрузок/месяц)
  • timeago.js (1,15 млн загрузок/месяц)
  • 310+ дополнительных пакетов @antv/* и других

В этой волне использовалась полезная нагрузка на основе Bun (498КБ index.js), запускаемая через "preinstall": "bun run index.js", с нагрузкой второй стадии, скрытой в поддельных коммитах, запушенных в GitHub-репозиторий antvis/G2 через эксплуатацию расшаривания fork-объектов.

Что делает вредоносный код (обе волны)

Обе волны используют одно и то же семейство инструментов «Mini Shai-Hulud»:

  • Сбор учётных данных: 80+ переменных окружения, полная цепочка AWS (env → config → IMDSv2 → ECS → Secrets Manager), GitHub PAT, npm-токены, SSH-ключи, K8s-токены, Vault-токены, менеджеры паролей (1Password, Bitwarden, pass, gopass)
  • Постоянство: демоны gh-token-monitor (волна 1) и kitty-monitor (волна 2) через LaunchAgent/systemd; хуки в .claude/settings.json и .vscode/tasks.json
  • Эксфильтрация: P2P-сети (волна 1), GitHub Git Data API + HTTPS под видом трассировок OpenTelemetry (волна 2)
  • Злоупотребление CI/CD: инъекция в workflow с дампом toJSON(secrets), обмен npm OIDC-токенов
  • Рубильник («мёртвая рука»): rm -rf ~/ при отзыве GitHub-токена, пока демон активен
  • Мёртвая точка C2 (волна 2): опрос GitHub commit search API по ключевому слову firedalazer, команды, подписанные RSA-PSS

Что проверяет этот скрипт

Затронутые пакеты

Волна 1: TanStack (42 пакета)

Затронуты только @tanstack/router* и @tanstack/start*. НЕ затронуты: @tanstack/query*, @tanstack/table*, @tanstack/form*, @tanstack/virtual*, @tanstack/store.

Полный список всех 42 пакетов см. в полном уведомлении.

Волна 2: аккаунт atool (314 пакетов)

Все пакеты, опубликованные npm-пользователем atool ([email protected]), получили вредоносные версии 19 мая 2026 года. Пакеты с высоким влиянием включают:

ПакетЕжемесячные загрузки
size-sensor4,2 млн
echarts-for-react3,8 млн
@antv/scale2,2 млн

Плюс 310+ пакетов, в основном в скоупе @antv/* (@antv/g2, @antv/g6, @antv/l7, @antv/s2, @antv/x6, @antv/f2 и т.д.), ai-figure, timeago-react, jest-canvas-mock, jest-date-mock и другие.

Полный список см. в анализе SafeDep.

Восстановление (при компрометации)

КРИТИЧЕСКИ ВАЖНО: отключите рубильник («мёртвую руку») ПЕРЕД отзывом любых токенов. Вредоносное ПО стирает $HOME, если токены отозваны, пока демон активен.

  1. Убейте демоны постоянства (gh-token-monitor И kitty-monitor) и удалите службы LaunchAgent/systemd
  2. Удалите файлы постоянства (.claude/router_runtime.js, .vscode/setup.mjs, ~/.local/share/kitty/cat.py, /var/tmp/.gh_update_state и т.д.)
  3. Удалите node_modules и lockfile, переустановите с --ignore-scripts
  4. Ротируйте ВСЕ учётные данные (npm, GitHub, AWS, GCP, SSH-ключи, Vault-токены, токены менеджеров паролей и т.д.)
  5. Заблокируйте домены атакующего на уровне DNS/файрвола (api.masscan.cloud, filev2.getsession.org, git-tanstack.com, t.m-kosche.com)
  6. Проверьте логи облачных провайдеров за 11–19 мая 2026 года

Официальные объявления и ссылки

Волна 1: TanStack (11 мая)

  • CVE-2026-45321 (CVSS 9.6 Critical) — Запись CVE
  • GHSA-g7cv-rxg3-hmpx — Уведомление GitHub
  • Посмертный анализ TanStack — tanstack.com/blog/npm-supply-chain-compromise-postmortem
  • Дальнейшие меры TanStack — tanstack.com/blog/incident-followup
  • Отслеживание в GitHub — TanStack/router#7383

Волна 2: взлом аккаунта atool (19 мая)

  • Анализ SafeDep — safedep.io/mini-shai-hulud-strikes-again-314-npm-packages-compromised

Разборы исследователей безопасности

  • Socket.dev
  • Snyk
  • StepSecurity (первые обнаружившие)
  • Wiz
  • Orca Security
  • SecurityWeek

Промпты для усиления защиты AI-агентов кодинга

Скопируйте и вставьте эти промпты в вашего AI-агента кодинга (Claude Code, Cursor, Cline/OpenClaw, Windsurf, Hermes и т.д.), чтобы укрепить ваш проект против атак на цепочку поставок, подобных этой.

Промпт 1: задержка публикации npm (карантин новых версий)

Укрепите npm-конфигурацию этого проекта против атак на цепочку поставок. Сделайте следующее:

  1. Зафиксируйте точные версии: Удалите все префиксы ^ и ~ у каждой зависимости в package.json, чтобы npm install никогда не подтягивал молча только что опубликованную версию.

  2. Отключите postinstall-скрипты по умолчанию: Добавьте ignore-scripts=true в .npmrc. Затем добавьте явный "preinstall" скрипт в package.json, который запускает только известные безопасные жизненные циклы скриптов, реально необходимые этому проекту (если такие есть).

  3. Обеспечьте установки только через lockfile в CI: Убедитесь, что CI использует npm ci (не npm install). Если есть файл конфигурации CI, проверьте это. Если нет — отметьте как ручной шаг.

  4. Добавьте проверку provenance: Добавьте npm audit signatures как шаг в pipeline CI и как git-hook перед push.

Промпт 2: укрепите конфигурацию AI-агента

Проверьте и укрепите конфигурацию AI-агента кодинга этого проекта против инъекций в цепочку поставок (как кампания TanStack/Mini Shai-Hulud, которая внедряла вредоносные хуки в .claude/settings.json и .vscode/tasks.json). Сделайте следующее:

Claude Code (.claude/):

  1. Просмотрите .claude/settings.json и .claude/settings.local.json на предмет записей hooks, выполняющих shell-команды. Помечайте всё, что исполняет файлы .js, .mjs или .sh — особенно из .claude/, .vscode/ или node_modules/.
  2. Удалите любые хуки, которые вы не можете проследить до легитимной, созданной пользователем цели.
  3. Добавьте правило в .gitignore, чтобы предотвратить коммит (он должен оставаться локальным).

Промпт 3: усиление GitHub Actions

Проверьте и укрепите конфигурацию GitHub Actions в этом репозитории против атак на цепочку поставок CI/CD. Сделайте следующее:

  1. Удалите или отрефакторите любые триггеры pull_request_target — они выполняют код workflow в контексте базового репозитория с доступом к секретам, даже при запуске из форка. При необходимости замените на pull_request + отдельный workflow с одобрением доступа.

  2. Зафиксируйте все сторонние actions на полные SHA коммитов (не на теги или ветки). Например, замените actions/checkout@v4 на actions/checkout@<полный-sha>. Добавьте комментарий с тегом для читаемости.

  3. Примените минимально необходимые права к каждому workflow. Добавьте явные блоки permissions:. Большинству workflow достаточно contents: read. Публикующим workflow нужен id-token: write — и ничего больше.

  4. Ограничьте область кэша: Если используется actions/cache, убедитесь, что ключи кэша привязаны к ветке, чтобы предотвратить отравление между ветками. Добавляйте restore-keys осторожно — не восстанавливайте кэши из недоверенных веток.

Лицензия

MIT

Скачать инструмент
#ПроверкаОписание
1Рубильник («мёртвая рука»)Демоны постоянства: gh-token-monitor (волна 1), kitty-monitor (волна 2)
2Вредоносные процессыИзвестные имена процессов атакующего (обе волны)
3Файлы полезной нагрузкиИзвестные вредоносные файлы по имени и SHA-256 хэшу (4 хэша)
4Хуки Claude CodeВнедрённые хуки в .claude/settings.json + общая эвристика SessionStart
5Задачи VS CodeВнедрённые задачи в .vscode/tasks.json + общая эвристика runOn: folderOpen
6GitHub ActionstoJSON(secrets) в любом workflow + предупреждение о pull_request_target
7npm lockfileСкомпрометированные версии пакетов в lockfile
8optionalDependenciesВредоносные @tanstack/setup и @antv/setup + 4 SHA поддельных коммитов
9Сетевые соединенияАктивные подключения к инфраструктуре C2 (5 доменов/IP)
10DNS-кэшРаннее разрешение доменов атакующего (4 домена)
11Git-веткиПаттерн именования веток атакующего в тематике «Дюны»
12Жизненные циклы скриптовЭвристика: bun run в preinstall/postinstall (установленные пакеты)
13Мёртвая точка C2Ключевое слово firedalazer и маркеры «Shai-Hulud» в истории git
14GitHub-зависимостиЭвристика: зависимости github: привязанные к SHA коммита в optionalDeps
ПакетВредоносные версииПервая безопасная версия
@tanstack/react-router1.169.5, 1.169.81.169.9
@tanstack/router-core1.169.5, 1.169.81.169.9
@tanstack/vue-router1.169.5, 1.169.81.169.9
@tanstack/solid-router1.169.5, 1.169.81.169.9
@tanstack/react-start1.167.68, 1.167.711.167.72
@tanstack/router-plugin1.167.38, 1.167.411.167.42
timeago.js1,15 млн
  • Создайте скрипт политики обновления: Создайте scripts/safe-update.sh, который:

    • Принимает имя пакета аргументом
    • Проверяет, когда была опубликована последняя версия (npm view <pkg> time --json)
    • Отказывается обновлять, если версии меньше 3 дней
    • Если старше 3 дней, запускает npm install <pkg>@latest --save-exact
    • Выводит сводку изменений
  • Не меняйте код приложения. Трогайте только конфигурационные файлы, .npmrc, скрипты package.json и конфигурацию CI.

    .claude/settings.local.json

    VS Code (.vscode/):

    1. Просмотрите .vscode/tasks.json и .vscode/launch.json на предмет задач, выполняющих неожиданные скрипты или бинарные файлы.
    2. Удалите любые задачи, которые ссылаются на файлы вроде setup.mjs, router_runtime.js или другие имена, не принадлежащие этому проекту.
    3. Проверьте .vscode/extensions.json на расширения, которые вы не узнаёте.

    Cursor (.cursor/):

    1. Просмотрите .cursor/settings.json и любые файлы правил на предмет внедрённых команд или хуков.
    2. Те же проверки, что и для VS Code выше — Cursor наследует конфигурацию .vscode/.

    Общее:

    1. Проверьте наличие любых скриптов preinstall, postinstall, prepare или prestart в package.json, которые вы не писали. Помечайте подозрительные.
    2. Проверьте .github/workflows/ на любой workflow, использующий pull_request_target — помечайте его как риск безопасности с комментарием, объясняющим почему.
    3. Убедитесь, что .gitignore исключает файлы сессий агента, которые могут раскрыть учётные данные (.claude/projects/, .cursor/logs/ и т.д.).

    Сообщите, что вы нашли и что изменили. Не изменяйте код приложения.

  • Добавьте StepSecurity Harden-Runner первым шагом в каждую job: step-security/harden-runner@v2 с egress-policy: audit (или block, если вы знаете ваши разрешённые endpoints).

  • Проверьте логи workflow на секреты: Убедитесь, что ни один шаг workflow не выводит ${{ secrets.* }} или ${{ toJSON(secrets) }} в stdout.

  • Сообщите обо всех изменениях. Не изменяйте код приложения.