Исследователи связали группировку TeamPCP с новой кампанией Mini Shai-Hulud: вредоносный код попал в пакеты TanStack, Mistral AI, Guardrails AI, OpenSearch, UiPath и других проектов. Атака важна не только разработчикам: через такие библиотеки злоумышленники крадут токены, ключи доступа, секреты CI/CD и данные из рабочих сред.
Речь идёт об атаке на цепочку поставки ПО (supply chain attack — заражение через доверенный компонент). Пользователь или компания может установить обновление из привычного источника и получить не исправление, а стилер учётных данных — программу для кражи логинов, токенов и ключей.
Как Mini Shai-Hulud попал в доверенные пакеты
По данным Aikido Security, Endor Labs, SafeDep, Socket и StepSecurity, заражённые npm-пакеты получили скрытый JavaScript-файл «router_init.js». Он проверял среду запуска, собирал сведения о системе и запускал кражу учётных данных.
В кампании пострадали пакеты из npm и PyPI — каталогов библиотек для JavaScript и Python. Среди названных проектов — TanStack, Mistral AI, Guardrails AI, OpenSearch и несколько менее известных пакетов, связанных с корпоративной автоматизацией, поисковой инфраструктурой, AI-инструментами и разработкой.
Особый риск в том, что атака шла через привычные механизмы публикации. TanStack связал инцидент с цепочкой в GitHub Actions: злоумышленники использовали триггер «pull_request_target», отравление кэша и извлечение OpenID Connect-токена (OIDC — стандарт выдачи временных токенов для доверенного входа между сервисами) из процесса сборки.
Почему «правильная» сборка не спасла
Обычно компании доверяют пакету сильнее, если он опубликован через официальный процесс и имеет подтверждение происхождения сборки. В случае TanStack вредоносные версии вышли через легитимный релизный конвейер проекта и получили SLSA Build Level 3 attestations — цифровые подтверждения происхождения.
StepSecurity назвала это редким скачком в сложности атаки: червь выпускал вредоносные пакеты с валидными attestations. Иными словами, один формальный признак доверия уже не гарантирует безопасность.
TanStack сообщил, что npm-токены не украли, а сам workflow публикации npm не взломали напрямую. Злоумышленники подготовили вредоносную нагрузку в форке GitHub, внедрили её в публикуемые tarball-архивы, затем использовали захваченные OIDC-токены для выпуска заражённых версий.
Что именно крал стилер
Mini Shai-Hulud искал секреты в средах разработки и автоматизации: токены GitHub, ключи облачных провайдеров, данные криптокошельков, секреты CI-систем, параметры AI-инструментов и учётные данные приложений для общения. Украденную информацию отправляли на домен filev2.getsession[.]org.
Если отправка не срабатывала, вредоносный код мог сохранять зашифрованные данные в репозитории под контролем атакующих через GitHub GraphQL API. В качестве автора коммитов фигурировал адрес claude@users.noreply.github.com.
Червь также закреплялся в Claude Code и Microsoft Visual Studio Code. После перезагрузки или нового запуска среды разработки стилер снова стартовал и продолжал искать секреты. Отдельный сервис gh-token-monitor следил за появлением новых GitHub-токенов и повторно отправлял их злоумышленникам.
Похожая логика кражи секретов опасна и в AI-средах: ранее мы разбирали, как уязвимость Ollama грозит утечкой ключей API и переписок. Для атакующего такие ключи часто ценнее пароля: они открывают доступ к моделям, данным и платным ресурсам.
Масштаб и затронутые версии
Компрометации TanStack присвоили идентификатор CVE-2026-45321. Оценка CVSS — 9,6 из 10, то есть критический уровень. По данным исследователей, в экосистеме TanStack пострадали 42 пакета и 84 версии.
За пределами TanStack кампания затронула, среди прочих, guardrails-ai@0.10.1 в PyPI, mistralai@2.4.6 в PyPI, версии @opensearch-project/opensearch 3.5.3, 3.6.2, 3.7.0 и 3.8.0, а также несколько пакетов Squawk и TallyUI.
Microsoft при анализе вредоносного пакета mistralai указала на загрузку стилера с удалённого сервера 83.142.209[.]194. В коде нашли проверку окружения: программа старалась не запускаться в русскоязычных системах. Это не повод расслабляться: корпоративные проекты часто собираются на англоязычных серверах, в контейнерах и облачных средах.
Guardrails AI выделяется тем, что вредоносный код выполнялся уже при импорте пакета. На Linux-системах пакет скачивал Python-артефакт с git-tanstack[.]com/transformers.pyz, записывал его во временную папку и запускал без проверки целостности.
Почему это касается не только разработчиков
Если злоумышленники получают токен CI/CD, они могут читать приватные репозитории, менять код, выпускать поддельные обновления и красть секреты клиентов. Один заражённый пакет способен ударить по цепочке компаний, которые даже не знают о прямой зависимости.
Для обычного пользователя риск проявляется иначе. Компрометированная рабочая станция разработчика или администратора может стать источником утечки рабочих чатов, ключей облака и финансовых данных. Иногда симптомы выглядят бытовыми: человек ищет «discord не открывается» или «не работает дискорд сейчас», хотя проблема началась не с приложения, а с заражённой среды или перехваченной сессии.
Схожий принцип социальной маскировки встречается и в массовых атаках: например, фальшивая CAPTCHA заражает компьютеры стилером Vidar. Разница лишь в канале: там жертву обманывают на сайте, здесь атакуют через доверенную библиотеку.
Что сделать сейчас
- Разработчикам и администраторам — проверить зависимости npm и PyPI на версии, перечисленные исследователями, особенно TanStack, guardrails-ai, mistralai и OpenSearch.
- Немедленно перевыпустить GitHub-токены, ключи облаков, секреты CI/CD и API-ключи, если заражённые пакеты могли запускаться в проекте.
- Очистить кэш GitHub Actions и проверить workflow-файлы на неожиданные шаги отправки секретов во внешние адреса.
- Проверить Visual Studio Code и Claude Code на неизвестные расширения, хуки автозапуска и сторонние скрипты.
- Включить принцип минимальных прав: токен сборки не должен иметь доступ ко всем репозиториям и секретам компании.
- Не хранить долгоживущие ключи в локальных файлах проекта, если их можно заменить короткими временными токенами.
- Для работы с репозиториями, админками и облачными панелями в публичных сетях использовать сервис безопасного интернет-соединения, который помогает защитить соединение и приватность данных.
- Если пакет уже запускался на рабочей машине, считать систему потенциально скомпрометированной: собрать логи, сменить секреты и проверить устройство антивирусными и EDR-средствами.
Комментарии (0)
Будьте уважительны. Спам и ссылки на сторонние сервисы скрываются модерацией.
Пока комментариев нет. Вы можете быть первым.