Что мы знаем про класс инцидентов с заражёнными пакетами из npm/PyPI и как BloodGPT их обрабатывает. Структурный контекст — supply-chain-security. Превентивная часть — security-onboarding.

Известные семейства атак

Shai-Hulud 2.0 (ноябрь 2025) — npm-worm, распространялся через preinstall lifecycle. У нас попал в систему через npx @usebruno/cli → transitive postman-request@postman/tunnel-agent. Создал PAT-токен с правами на 42 приватных репо Realai-plus, развернул self-hosted GH Actions runner и пытался lateral movement. Был обнаружен публично через security-researcher report (Naveen, 26 нояб 2025).1 Полный разбор у Wiz.2

Mini-Shai-Hulud (май 2026) — следующая волна, ~400 пакетов на npm/TanStack и PyPI начиная с mistral. Особенность: малварь игнорирует машины с RU-локалью, на других пытается rm -rf /. Конкретные пакеты — Socket blog.3

Семейства живут параллельно — обнаружение свежей волны не значит что предыдущая закрыта.

Indicators of Compromise

На dev-машине Shai-Hulud 2.0 оставляет директорию ~/.dev-env/ (там селф-хостед GH Actions runner), файлы setup_bun.js и bun_environment.js (~10MB обфусцированного payload), JSON-дампы cloud.json / contents.json / environment.json / truffleSecrets.json. В GitHub-организации — публичный репозиторий с описанием Sha1-Hulud: The Second Coming, workflow .github/workflows/discussion.yaml, self-hosted runner с именем SHA1HULUD, свежесозданные PAT-токены без явного актора.

В исходниках компрометируется набор known-namespaces: @postman/, posthog-*, @asyncapi/, zapier/, @ensdomains/, shell-exec, kill-port, get-them-args, glob ≤10.4.2. Bash-детектор Cobenian/shai-hulud-detect проверяет около 979 known-compromised пакетов и паттернов, используется для baseline-скана.4

Что делается при подозрении

Немедленно — отзыв credentials (GH PAT, npm publish token, GCP service accounts, Azure), очистка package cache (npm cache clean --force, pnpm store prune, rm -rf node_modules), удаление ~/.dev-env/ если есть, поиск в GitHub-организации репозиториев и workflows с hulud в имени или описании, GitHub audit log на свежесозданные PAT/репо/workflows за 48ч.

В первые сутки — rotation всех credentials затронутого аккаунта (включая SSH keys и application secrets из репозиториев в scope), pin зависимостей к pre-incident версиям (откат lock-files), документирование инцидента для SOC2 audit trail даже если регулятор не уведомляется. Risk assessment — был ли затронут PII / patient data; если да — OCPDP Cyprus уведомление в 72 часа по GDPR Article 33.

Stakeholder-уведомления зависят от scope: SOC2 auditor обязательно для следующего аудита, cyber-insurance — если страховка активна (в ноябре 2025 не уведомляли потому что договор тогда не был подписан), business partners — если есть контрактные обязательства о disclosure.

Что было в ноябре 2025

Полный кейс зафиксирован в Slack-треде и в BG-612 (Linear). Action items, которые Артём как DPO провёл: отзыв PAT и проверка через audit log, отключение PAT-токенов на уровне Realai-plus org через GitHub org settings, удаление скомпрометированного репозитория и runner-а, обновление уязвимых npm-пакетов до patched версий (glob 10.4.2 → 10.5.0, cross-spawn, workos-inc/authkit-nextjs), подготовка письма SOC2-аудитору и cyber-insurance. OCPDP Cyprus не уведомляли — фактической утечки данных не было (PAT создан малварью автоматически и быстро detect’нут).

Ответственность

В BloodGPT по supply-chain инцидентам ведёт Артём Евсиков (Data Protection Officer). Канал — #security-reporting в Slack. Эскалация без подтверждения, если что-то выглядит как Shai-Hulud — лучше ложно-положительная тревога чем пропущенное заражение.

Открытые вопросы

  • Документ-первоисточник IR-процедуры для SOC2 — существует ли где-то ещё помимо BG-612, или эта wiki-страница де-факто первичная
  • Notify-список (cyber-insurance / business partners по конкретным контрактам) — фиксирован ли где-то для use в момент инцидента, не throw away’нуть на discovery

Связано

Сноски

  1. Slack thread в #security-reporting, 26 нояб 2025 — расследование инцидента, переписка с ресёрчером Naveen, action items Артёма. https://realaicorp.slack.com/archives/C09GBEVRQEP/p1764142896295519

  2. Wiz Threat Intelligence — Shai-Hulud 2.0 ongoing supply chain attack, разбор IoC и attacker methods. https://www.wiz.io/blog/shai-hulud-2-0-ongoing-supply-chain-attack

  3. Socket blog, mini-Shai-Hulud на TanStack + PyPI, 11-12 мая 2026. https://socket.dev/blog/tanstack-npm-packages-compromised-mini-shai-hulud-supply-chain-attack

  4. Cobenian shai-hulud detector — bash-скрипт для baseline-скана локального воркспейса. https://github.com/Cobenian/shai-hulud-detect