PhantomRaven: 126 npm-пакетов с ИИ-стилером воруют токены разработчиков

Коротко о главном
Специалисты CrowdStrike Counter Adversary Operations с высокой уверенностью установили, что вредоносную npm-кампанию PhantomRaven — не менее 126 пакетов с суммой свыше 86 000 загрузок — предположительно написал большой языковой модель (LLM). Малварь прячет полезную нагрузку в так называемых Remote Dynamic Dependencies: код подтягивается с внешнего URL прямо во время npm install, поэтому большинство сканеров его не видят. Цель — кража токенов GitHub и npm, а также секретов CI/CD прямо из окружений сборки. Для команд разработки это ещё один сигнал: аудит зависимостей и защита конвейера сборки — часть информационной безопасности продукта, а не факультатив.
Атака опасна тем, что бьёт по самому доверенному звену — пакетному менеджеру. Разработчик ставит внешне безобидную зависимость, а вредонос загружается уже после установки, обходя контроль. Особенно уязвимы проекты, где имена пакетов подсказывает ИИ-ассистент: злоумышленник заранее регистрирует «галлюцинированные» имена (техника slopsquatting) и ждёт, пока их кто-нибудь установит. Если ваш процесс CI/CD хранит токены и ключи в переменных окружения, именно они — главная добыча.
Практический вывод простой: относитесь к каждой сторонней зависимости как к недоверенному коду. Закрепляйте версии через lock-файлы, отключайте выполнение post-install скриптов там, где это возможно, изолируйте раннеры и держите секреты в отдельном хранилище с короткоживущими токенами. PhantomRaven не эксплуатирует уязвимость конкретной библиотеки — он эксплуатирует привычку слепо доверять реестру.
Что такое PhantomRaven
PhantomRaven — это многоволновая кампания в реестре npm, впервые описанная исследователями Koi Security. По данным аналитиков, злоумышленник опубликовал не менее 126 вредоносных пакетов, которые в совокупности набрали более 86 000 загрузок. Пакеты маскировались под легитимные с помощью типосквоттинга (близкие по написанию имена) и slopsquatting — регистрации имён, которые ИИ-ассистенты по коду склонны «выдумывать» в ответах.
Ключевая техническая находка — механизм Remote Dynamic Dependencies (RDD). Вместо того чтобы класть вредоносный код прямо в пакет, злоумышленник указывает зависимость как внешний URL. При установке npm честно скачивает и выполняет этот удалённый код, но так как он физически не лежит в реестре, статические сканеры и аудиторы npm его попросту не проверяют. Это и позволяло кампании долго оставаться незамеченной.
Что именно крадёт малварь
После установки полезная нагрузка проводит разведку окружения и вытягивает всё, что помогает злоумышленнику войти в чужие системы. По данным CrowdStrike, стилер собирает:
Токены аутентификации — учётные данные GitHub, токены npm и другие ключи, найденные в окружении сборки.
Секреты CI/CD — переменные окружения из GitHub Actions, GitLab CI, Jenkins и CircleCI, где часто лежат ключи доступа к облаку, реестрам и внешним сервисам.
Идентификационные данные — адреса электронной почты, конфигурацию git и npm, отпечаток системы и публичный IP-адрес.
Опасность утечки CI/CD-секретов в том, что они дают доступ не к одной машине, а ко всей цепочке: реестрам образов, облачным аккаунтам, репозиториям и продакшену. Один скомпрометированный раннер может стать точкой входа в инфраструктуру всей компании.
Почему это писал ИИ
Отдельный сюжет этой истории — авторство. CrowdStrike Counter Adversary Operations с высокой уверенностью заключила, что код малвари написан с помощью большой языковой модели. Основания — характерные признаки: избыточно многословные комментарии, шаблонные заготовки кода (placeholder-фрагменты) и статистические закономерности в распределении токенов, типичные для генеративных моделей.
По оценке исследователей, за кампанией стоит актор, активный как минимум с ноября 2022 года, который выдаёт себя за багбаунти-хантера и заявляет о выплатах от не менее чем девяти организаций в сферах технологий, ретейла и гостеприимства. Он вёл несколько npm-аккаунтов. Показательно, что украденные данные не всплывали на криминальных площадках — это косвенно указывает, что стилер использовался не для перепродажи, а для поиска целей под багбаунти. Сам этот сдвиг важен: генеративный ИИ снижает порог входа в разработку вредоносного ПО, и цепочка поставок ПО становится всё более привлекательной мишенью.
Что делать командам разработки
PhantomRaven не требует какой-то экзотической защиты — он требует дисциплины в работе с зависимостями и сборкой. Практическая последовательность действий:
Фиксируйте зависимости. Используйте package-lock.json или npm ci вместо «плавающих» версий, чтобы сборка ставила ровно то, что вы проверяли, а не свежую скомпрометированную версию.
Контролируйте post-install. Запускайте установку с --ignore-scripts там, где это допустимо, и внимательно относитесь к пакетам, которые тянут зависимости по внешним URL, — это прямой признак RDD.
Изолируйте раннеры и секреты. Давайте CI/CD-джобам минимально необходимые права, используйте короткоживущие токены (OIDC вместо статических ключей) и храните секреты в отдельном менеджере, а не в открытых переменных окружения.
Проверяйте имена пакетов от ИИ. Если имя зависимости подсказал ассистент по коду, убедитесь, что пакет действительно существует и поддерживается, — slopsquatting эксплуатирует именно слепое доверие к таким подсказкам.
Мониторьте цепочку поставок. Включите сканирование зависимостей и SBOM в конвейер, чтобы новые и подозрительные пакеты попадали под контроль до, а не после установки на прод.
Ничто из этого не гарантирует стопроцентной защиты, но вместе эти меры радикально сужают поверхность атаки на цепочку поставок и превращают инцидент вроде PhantomRaven из компрометации в заблокированную попытку.
Часто задаваемые вопросы
Что такое PhantomRaven? Это вредоносная кампания в реестре npm: не менее 126 пакетов с суммарно более чем 86 000 загрузок, которые крадут токены и секреты из окружений разработки и сборки. По оценке CrowdStrike, код малвари был написан с помощью большой языковой модели.
Что такое Remote Dynamic Dependencies? Это техника, при которой вредоносный код не лежит внутри npm-пакета, а подтягивается с внешнего URL при установке. Поскольку код физически отсутствует в реестре, статические сканеры его не проверяют, и атака дольше остаётся незаметной.
Что такое slopsquatting? Это регистрация имён пакетов, которые ИИ-ассистенты по коду склонны «галлюцинировать» — предлагать несуществующие библиотеки. Злоумышленник заранее занимает такие имена, чтобы их установил разработчик, доверившийся подсказке модели.
Какие данные под угрозой? Токены GitHub и npm, секреты CI/CD (GitHub Actions, GitLab CI, Jenkins, CircleCI), адреса электронной почты, конфигурация git/npm, отпечаток системы и публичный IP. Наибольший риск несут именно CI/CD-секреты — они открывают доступ ко всей инфраструктуре.
Как защититься? Фиксируйте версии через lock-файлы и npm ci, отключайте лишние post-install скрипты, изолируйте раннеры, переходите на короткоживущие токены, проверяйте подсказанные ИИ имена пакетов и внедряйте сканирование зависимостей в CI/CD.
Цепочка поставок под контролем?
Проверим ваши зависимости и конвейер CI/CD, найдём вредоносные и уязвимые пакеты, забытые секреты в переменных окружения и слабые места сборки, поможем выстроить безопасный процесс поставки ПО и мониторинг зависимостей.
Источники
CrowdStrike Counter Adversary Operations — анализ кампании PhantomRaven, сентябрь 2026 года (атрибуция и технические детали).
The Hacker News — Claimed Bug Bounty Hunter Likely Used LLM to Build PhantomRaven npm Stealer, сентябрь 2026 года.
Koi Security — PhantomRaven: npm Malware Hidden in Invisible Dependencies (первичное раскрытие механизма RDD).