Пятая волна атаки PhantomRaven: злоумышленники продолжают воровать данные разработчиков через npm-пакеты

information security

Кампания по краже учётных данных разработчиков, известная как PhantomRaven, не прекратилась даже после того, как о её существовании стало известно публично. Исследователи из компании Mend.io обнаружили пятую волну этой атаки, которая использует новый сервер управления, тридцать три свежих вредоносных пакета и более сложную схему доставки вредоносного кода. Несмотря на то что предыдущие четыре волны были раскрыты ещё в марте этого года, атакующий продолжает действовать: регистрирует новую инфраструктуру и публикует пакеты вплоть до 26 апреля 2026 года. Все тридцать три пакета до сих пор доступны для скачивания, а сервер управления остаётся активным.

Описание

Чтобы понять угрозу, нужно разобраться, как работает npm. Это что-то вроде магазина приложений для разработчиков на JavaScript: они загружают оттуда готовые блоки кода для своих проектов. PhantomRaven злоупотребляет этим доверием. Вредоносные пакеты выглядят безобидно, но в момент установки они незаметно связываются с сервером атакующего, скачивают и выполняют вредоносный код на машине разработчика. Всё происходит тихо, без каких-либо предупреждений.

PhantomRaven впервые заметили в октябре 2025 года - тогда компания Koi Security выявила 126 вредоносных пакетов, которые суммарно скачали более 86 тысяч раз. Позднее другие исследователи отследили ещё три волны атак в начале 2026 года. Во всех случаях использовалась одинаковая инфраструктура: домены регистрировались через Amazon Registrar с сервисом защиты личности, применялись серверы имён AWS Route 53, отсутствовали TLS-сертификаты, а в самих пакетах жёстко прописывалось поле ""author": "JPD"". Адреса электронной почты атакующего менялись, но все они следовали шаблонам вроде "jjjjpd01@outlook.com", а затем "dharshanjp*@outlook.com" и "jpddharsh*@outlook.com". Судя по всему, злоумышленника зовут Даршан JP. Кроме того, в коде пакетов встречается комментарий: "Этот пакет используется в целях тестирования безопасности PoC" - очевидная попытка обеспечить себе алиби.

Пятая волна повторяет ту же схему, что и предыдущие. Новый домен управления - "pack[.]nppacks[.]com" - зарегистрировали 10 марта 2026 года, всего через восемь дней после публичного раскрытия предыдущей инфраструктуры. Сообщили исследователи Mend.io, технический анализ показал трёхступенчатую цепочку заражения, которую ранее не документировали полностью.

На первом этапе атакующий публикует безобидный с виду пакет в реестре npm. У него обычное название, версия, имитирующая зрелый продукт, и минимальный "index.js", который лишь выводит "Hello, world!". Настоящий механизм спрятан в файле "package.json": пакет указывает сам себя как зависимость, но ссылается не на официальный реестр, а на сервер атакующего. Когда разработчик запускает "npm install", менеджер пакетов разрешает зависимости и обращается к домену "pack[.]nppacks[.]com", чтобы скачать второй архив. Этот трюк назвали "удалённая динамическая зависимость" (Remote Dynamic Dependency, RDD). Вредоносный код лежит не внутри пакета, а на сервере злоумышленника, поэтому статические анализаторы, которые проверяют только опубликованные в реестре файлы, его не видят.

На втором этапе сервер возвращает уникальный для каждого пакета архив. У всех таких архивов одинаковый "index.js", но из-за разных имён и версий хеш SHA256 каждый раз получается новым. Это затрудняет обнаружение по хеш-суммам. Внутри второго архива находится ещё одна зависимость, которая направляет к универсальной программе-загрузчику с именем "idle-style-xi". Сам загрузчик никогда не публикуется в npm, он существует только на сервере управления.

Третий этап - выполнение. В архиве "idle-style-xi" прописан скрипт, который запускается автоматически до установки пакета, без каких-либо действий со стороны пользователя. Этот скрипт выполняет четыре шага: собирает данные о жертве, проходит аутентификацию на сервере управления, скачивает персонализированную полезную нагрузку и запускает её, после чего удаляет все следы. Важно, что сервер выдаёт токен только в том случае, если заголовок "X-Package-Name" содержит правильное имя загрузчика. Любой другой запрос получает отказ, а IP-адрес источника блокируется. Токен действует всего несколько секунд, что делает автоматическое сканирование крайне затруднительным.

Финальная нагрузка - это 5865 байт обычного JavaScript. Первым делом она отключает весь вывод на консоль, чтобы жертва ничего не заметила во время установки. Затем скрипт собирает почтовые адреса из переменных окружения, файлов ".gitconfig", ".npmrc" и поля "author" в "package.json". Также он извлекает информацию о системе: имя хоста, тип и версию операционной системы, архитектуру, локальный и публичный IP-адреса, имя пользователя, текущую директорию и версию Node.js. Особое внимание уделяется переменным окружения, характерным для систем непрерывной интеграции и доставки (CI/CD). Скрипт проверяет наличие переменных GitHub Actions, GitLab CI, Jenkins и CircleCI. Все собранные данные отправляются на сервер управления методом POST на эндпоинт "mozbra.php".

Таким образом, атакующий получает не только личные данные разработчика, но и токены доступа, имена репозиториев, учётные данные облачных провайдеров, если они были доступны в окружении. Особенно уязвимы разработчики в сферах децентрализованных финансов (DeFi), облачной инфраструктуры и искусственного интеллекта. Пятая волна целенаправленно имитирует пакеты для EigenLayer (протокол рестейкинга), для Terraform на Azure, а также для библиотек, связанных с большими языковыми моделями. Такие разработчики обычно имеют доступ к приватным ключам, ключам AWS и Azure, а также к секретам CI/CD.

Примечательная находка - инфраструктура сервера управления. Домен "pack[.]nppacks[.]com" разрешается в IP-адрес "54.160.138[.]70", который принадлежит AWS EC2. Обратный поиск показывает, что на том же сервере расположен поддомен "hblnew[.]ecompk[.]com". Компания ECOM PK - легитимный IT-провайдер, работающий с крупным банком HBL. Для управления DNS используется Cloudflare. Чтобы добавить поддомен, указывающий на IP-адрес атакующего, нужен доступ к учётной записи Cloudflare компании ECOM PK. Это означает, что либо у атакующего есть инсайдер в этой организации, либо учётная запись была скомпрометирована. Содержимое папок на обоих доменах полностью идентично, что подтверждает их принадлежность одной кампании.

За всё время кампании PhantomRaven, начиная с августа 2025 года, было создано не менее 200 вредоносных пакетов. Пятая волна показывает, что злоумышленник действует настойчиво и методично. Даже после публичного раскрытия он перестроил инфраструктуру всего за восемь дней. Разработчикам, использующим npm, рекомендуется проверить свои проекты на наличие зависимостей, указанных в виде HTTP-ссылок, а не версий. Команда поможет найти такие случаи:

При установке пакетов в средах, где скрипты не обязательны, стоит использовать флаг "--ignore-scripts", который блокирует выполнение автоматического кода до установки. Однако главная рекомендация - если вы установили любой из перечисленных пакетов, считайте окружение скомпрометированным и немедленно смените все токены, ключи и пароли.

Индикаторы компрометации

IPv4

  • 54.160.138.70

Domains

  • pack.nppacks.com
  • hblnew.ecompk.com

URLs

  • pack.nppacks.com/mozbra.php

Комментарии: 0