В реестре пакетов npm была обнаружена активная кампания по атаке на цепочку поставок программного обеспечения под кодовым названием PhantomRaven. Исследователи из компании Koi Security, впервые выявившие угрозу, сообщили о публикации более 126 вредоносных пакетов, которые были установлены свыше 86 000 раз. Кампания, предположительно начавшаяся в августе 2025 года, также привлекла внимание DevSecOps-компании DCODX, которая зафиксировала активность некоторых из этих пакетов.

Ключевой особенностью атаки является использование новой техники, названной «Удаленные Динамические Зависимости» (Remote Dynamic Dependencies, RDD). Вместо того чтобы указывать зависимости в файле конфигурации пакета, ссылаясь на официальный репозиторий
Этот метод позволяет обходить стандартные средства безопасности. Сканеры уязвимостей и инструменты анализа зависимостей не запрашивают данные по сторонним HTTP-адресам, из-за чего для автоматизированных систем вредоносный пакет выглядит так, будто у него "0 зависимостей». Это создает «слепую зону», которую и эксплуатируют атакующие.
Использование RDD дает злоумышленникам полный контроль над полезной нагрузкой. Они могут на начальном этапе распространять безопасный код, чтобы завоевать доверие и увеличить количество установок, а затем, в любой момент, заменить его на вредоносную версию. Такая динамичность делает обнаружение атаки крайне сложной задачей.
Цепочка заражения активируется сразу после установки одного из вредоносных пакетов разработчиком. С помощью хука
После активации вредоносное ПО начинает сбор конфиденциальных данных из окружения разработчика. Оно сканирует систему на наличие адресов электронной почты, собирает информацию о среде непрерывной интеграции и развертывания (CI/CD) и создает цифровой отпечаток системы, включая публичный IP-адрес. Основной целью являются токены аутентификации, секреты CI/CD и учетные данные GitHub.
Злоумышленники также применяют тактику «слопсквоттинга» (Slopsquatting). Они регистрируют пакеты с именами, которые «галлюцинируют» большие языковые модели (LLM). Разработчики, доверяя рекомендациям нейросетей, могут установить несуществующий, но правдоподобно названный пакет, который оказывается вредоносным.
Уязвимость экосистемы npm усугубляется использованием так называемых «жизненных циклов» скриптов (
Эксперт по кибербезопасности Yomtov из Koi Security отмечает, что PhantomRaven использует фундаментальные «слепые зоны» в инструментах безопасности, поскольку удаленные динамические зависимости невидимы для статического анализа кода.
В компании DCODX добавляют, что «простота публикации и низкий порог входа» в экосистему npm в сочетании с автоматическим выполнением скриптов жизненного цикла создают идеальную среду для подобных атак.
Среди выявленных вредоносных пакетов и их количества загрузок числятся:

Изображение носит иллюстративный характер
Ключевой особенностью атаки является использование новой техники, названной «Удаленные Динамические Зависимости» (Remote Dynamic Dependencies, RDD). Вместо того чтобы указывать зависимости в файле конфигурации пакета, ссылаясь на официальный репозиторий
npmjs.com, злоумышленники прописывают URL-адрес, ведущий на подконтрольный им домен packages.storeartifact[.]com. Этот метод позволяет обходить стандартные средства безопасности. Сканеры уязвимостей и инструменты анализа зависимостей не запрашивают данные по сторонним HTTP-адресам, из-за чего для автоматизированных систем вредоносный пакет выглядит так, будто у него "0 зависимостей». Это создает «слепую зону», которую и эксплуатируют атакующие.
Использование RDD дает злоумышленникам полный контроль над полезной нагрузкой. Они могут на начальном этапе распространять безопасный код, чтобы завоевать доверие и увеличить количество установок, а затем, в любой момент, заменить его на вредоносную версию. Такая динамичность делает обнаружение атаки крайне сложной задачей.
Цепочка заражения активируется сразу после установки одного из вредоносных пакетов разработчиком. С помощью хука
preinstall — специального скрипта, который npm выполняет автоматически перед установкой, — с удаленного сервера загружается и запускается основной вредоносный код. После активации вредоносное ПО начинает сбор конфиденциальных данных из окружения разработчика. Оно сканирует систему на наличие адресов электронной почты, собирает информацию о среде непрерывной интеграции и развертывания (CI/CD) и создает цифровой отпечаток системы, включая публичный IP-адрес. Основной целью являются токены аутентификации, секреты CI/CD и учетные данные GitHub.
Злоумышленники также применяют тактику «слопсквоттинга» (Slopsquatting). Они регистрируют пакеты с именами, которые «галлюцинируют» большие языковые модели (LLM). Разработчики, доверяя рекомендациям нейросетей, могут установить несуществующий, но правдоподобно названный пакет, который оказывается вредоносным.
Уязвимость экосистемы npm усугубляется использованием так называемых «жизненных циклов» скриптов (
preinstall, install, postinstall). Они позволяют выполнять произвольный код на машине разработчика автоматически в процессе установки, не требуя никакого дополнительного взаимодействия или подтверждения со стороны пользователя. Эксперт по кибербезопасности Yomtov из Koi Security отмечает, что PhantomRaven использует фундаментальные «слепые зоны» в инструментах безопасности, поскольку удаленные динамические зависимости невидимы для статического анализа кода.
В компании DCODX добавляют, что «простота публикации и низкий порог входа» в экосистему npm в сочетании с автоматическим выполнением скриптов жизненного цикла создают идеальную среду для подобных атак.
Среди выявленных вредоносных пакетов и их количества загрузок числятся:
op-cli-installer (486 загрузок), unused-imports (1350 загрузок), badgekit-api-client (483 загрузки), polyfill-corejs3 (475 загрузок) и eslint-comments (936 загрузок).