Атака на npm: dependency confusion и скрытая разведка
Microsoft Threat Intelligence сообщила о сложной chain supply-атаке, в которой злоумышленник использовал вредоносные npm-пакеты и технику dependency confusion для доставки зашифрованного payloads, предназначенного для разведки перед возможной дальнейшей эксплуатацией. Инцидент, по данным компании, произошел 28–29 мая 2026 года и затронул сразу несколько организационных пространств, маскируясь под легитимные корпоративные namespaces.
Как работала атака
По оценке Microsoft, один злоумышленник, действовавший под разными псевдонимами, опубликовал вредоносные пакеты в npm, имитируя внутренние сервисы и официальные корпоративные компоненты. Основная задача этих пакетов заключалась в загрузке и запуске сильно зашифрованного JavaScript-stager размером около 17 KB, который собирал сведения о системе и контексте разработчика.
После установки вредоносный код активировался автоматически через npm lifecycle hooks: выполнялся postinstall-script, который устанавливал связь с server управления (C2). При этом процесс оставался незаметным для пользователя и мог сработать даже в средах разработки и CI/CD.
Приманка через dependency confusion
Атака использовала типичные приемы dependency confusion:
- завышенные номера версий, чтобы перехватывать resolution в npm;
- имитацию внутренних service names;
- публикацию пакетов, визуально похожих на официальные корпоративные библиотеки.
Среди примеров Microsoft называет пакеты svp-baas и payments-widget-sdk. Кроме того, один из злоумышленников использовал версию 100.100.100, чтобы гарантированно доминировать над любым легитимным пакетом в механике выбора версий npm.
Что собирал stager
JavaScript-stager проводил reconnaissance среды и собирал информацию, полезную для дальнейшей атаки. Его поведение было завязано на флаг RECON_ONLY: в текущем режиме он выполнял только разведку, однако, по данным отчета, этот параметр можно изменить на стороне server, чтобы позднее включить полноценную exploitation.
Такой подход делает атаку многоэтапной: сначала проводится скрытая разведка, а затем, в нужный момент, может быть запущена более агрессивная payload.
Методы обхода анализа
Чтобы снизить риск обнаружения, вредоносный stager использовал несколько механизмов защиты от анализа и проверок:
- проверку переменной среды
CIдля идентификации автоматизированных сред; - deduplication на основе cache, чтобы избежать повторного мониторинга исполнения;
- platform-specific logic для доставки адаптированных payloads под разные operating systems.
По сути, это позволяло злоумышленнику маскировать активность в pipeline сборки и одновременно подготавливать инфраструктуру для следующего этапа атаки.
Атрибуция и инфраструктура
Криминалистический анализ показал, что вредоносные пакеты связаны с одним оператором. На это указывает общий authentication token, использовавшийся в ходе C2-communications. Дополнительными признаками стали общая infrastructure и схожие patterns публикации в разных аккаунтах npm.
Фактически несколько аккаунтов npm могли контролироваться одним и тем же субъектом.
Защита и реакция Microsoft
Microsoft отдельно отметила эффективность продуктов Microsoft Defender: они выявляют замаскированный stager и предотвращают выполнение payload, помещая его в quarantine на этапе установки.
Также компания рекомендует использовать advanced hunting для поиска:
- аномального поведения Node.js и npm;
- исходящих C2-connections;
- конкретных indicators, связанных с вредоносными пакетами.
Почему этот инцидент важен
Этот случай еще раз показывает, что уязвимости в widely used package management systems остаются одной из наиболее удобных точек входа для атакующих. Dependency confusion, creative names и автоматическая активность через lifecycle hooks делают supply chain угрозы особенно опасными: они позволяют атаке развиваться скрытно и обходить традиционные средства контроля.
В Microsoft подчеркивают, что подобные инциденты подтверждают необходимость надежных мер безопасности в software supply chain — от строгой проверки внутренних packages до постоянного мониторинга CI/CD-среды и сетевой активности.
Отчет получен из сервиса CTT Report Hub. Права на отчет принадлежат его владельцу.
Ознакомиться подробнее с отчетом можно по ссылке.


