Microsoft раскрыла атаку на цепочку поставок через npm: 14 поддельных пакетов крадут облачные секреты

information security

В конце мая 2026 года специалисты Microsoft зафиксировали масштабную атаку на цепочку поставок программного обеспечения, нацеленную на экосистему менеджера пакетов npm. Злоумышленники использовали методы подмены имён и метаданных, чтобы внедрить вредоносные компоненты в окружение разработчиков и DevOps-инженеров. Инцидент произошёл 28 мая, когда один актор под псевдонимом vpmdhaj всего за четыре часа опубликовал четырнадцать вредоносных пакетов. Все они имитировали популярные библиотеки для работы с поисковыми системами OpenSearch и ElasticSearch, а также инструменты настройки окружения и конфигурации.

Описание

Каждый пакет содержал автоматически исполняемый код, который запускался в момент установки через стандартную команду npm install. Для этого использовались так называемые хуки жизненного цикла - специальные скрипты, объявленные в файле package.json. Жертве не требовалось явно вызывать функции из пакета: заражение происходило в тот момент, когда разработчик или система непрерывной интеграции (CI) просто подтягивали зависимости. Это классический приём атак на цепочку поставок, когда доверие к публичному реестру оборачивается компрометацией всей среды разработки.

Самый опасный элемент атаки - второй этап, в ходе которого на машину жертвы загружалась полезная нагрузка размером около 195 килобайт. Этот файл, скомпилированный с помощью среды выполнения Bun, представлял собой инструмент для сбора учётных данных. Он нацелен на облачные сервисы Amazon Web Services (AWS), хранилище секретов HashiCorp Vault, систему токенов GitHub Actions и даже сам реестр npm. Ворованные токены публикации npm позволяют злоумышленникам выдавать себя за других сопровождающих пакетов и расширять атаку на новые цепочки.

Исследователи из Microsoft обнаружили, что пакеты использовали две разные генерации злоумышленных программ-загрузчиков. Первая версия при установке связывалась с командным сервером злоумышленников (C2) через HTTP, передавала сведения об окружении (имя хоста, платформу, версию Node.js) и получала оттуда сжатую полезную нагрузку. Вторая, более скрытная версия вообще отказалась от внешнего обмена данными на этапе установки. Вместо этого она проверяла, есть ли на компьютере легитимная среда Bun, и если нет - загружала её напрямую с официального репозитория GitHub. После этого встроенная в архив пакета полезная нагрузка запускалась уже из окружения Bun, что затрудняло обнаружение вредоносной активности.

Техника социальной инженерии была продумана до мелочей. Имена пакетов подражали настоящим: opensearch-setup, opensearch-config-utility, elastic-opensearch-helper и другие. В метаданных каждого пакета в качестве домашней страницы и репозитория указывался URL законного проекта OpenSearch на GitHub. Номера версий (например, 1.0.7265, 2.1.9201) были искусственно завышены, чтобы создать ложное впечатление долгой истории разработки. Все эти приёмы побуждают разработчиков устанавливать пакет по ошибке или из-за переноса доверия к известному бренду.

Последствия такой атаки выходят далеко за пределы одной рабочей станции. Украденные токены сессий AWS и доступ к Secrets Manager позволяют перемещаться по облачной инфраструктуре жертвы и похищать данные. Скомпрометированные токены GitHub Actions дают возможность манипулировать репозиториями и вносить изменения в конвейеры сборки. Но главная угроза - это похищение токенов публикации npm. С их помощью атакующий может загружать вредоносные обновления в пакеты, принадлежащие другим авторам, тем самым расширяя радиус поражения далеко за пределы первоначальных четырнадцати пакетов.

Эксперты Microsoft отмечают, что выбор цели не случаен. Набор ключевых слов в описаниях пакетов указывает на разработчиков, работающих с OpenSearch и ElasticSearch. Именно у этой аудитории чаще всего встречаются доступы к облачным сервисам AWS и инфраструктуре Elastic Cloud. Следовательно, злоумышленники целенаправленно атаковали сегмент, где вероятность получить ценные облачные учётные данные максимальна.

На момент публикации отчёта Microsoft все выявленные пакеты и учётная запись злоумышленника уже были заблокированы в реестре npm. Тем не менее компания рекомендует организациям провести ревизию своих проектов. Следует проверить файлы блокировки зависимостей (package-lock.json, yarn.lock) на предмет установки любой из версий, опубликованных 28 мая 2026 года под именами, содержащими opensearch-setup, elatic-helper и подобные. Всем, кто обнаружил такие пакеты, необходимо немедленно сменить токены AWS, HashiCorp Vault, GitHub Actions и npm. Также полезно временно отключить выполнение скриптов установки через параметр --ignore-scripts, чтобы предотвратить аналогичные атаки в будущем.

Этот инцидент ещё раз напоминает о том, что доверие к публичным реестрам пакетов должно быть подкреплено тщательной проверкой всех загружаемых зависимостей. Даже один невнимательно установленный пакет способен открыть злоумышленникам доступ ко всей цепочке поставок компании.

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

IPv4

  • 169.254.169.254
  • 169.254.170.2

Domains

  • aab.sportsontheweb.net

Emails

  • a39155771@gmail.com

SHA256

  • 638788afc4f1b5860a328312caf5895abd5f5632d28a4f2a85b09076e270d15d
  • 77d92efe7af3547f71fd41d4a884872d66b1be9499eaa637e91eac866911694d
  • bfa149694ec6411c23936311a999163ade54d6f38e2f4b0e3cfb8cb67bd7cfaa

Package

  • @vpmdhaj/devops-tools (1.0.7267)
  • @vpmdhaj/elastic-helper (1.0.7269)
  • @vpmdhaj/opensearch-setup (1.0.7267)
  • @vpmdhaj/search-setup (1.0.7268)
  • app-config-utility (1.0.9300)
  • elastic-opensearch-helper (1.0.9108)
  • env-config-manager (2.1.9201)
  • opensearch-config-utility (1.0.9106)
  • opensearch-security-scanner (1.0.10)
  • opensearch-setup (1.0.9103)
  • opensearch-setup-tool (1.0.9108)
  • search-cluster-setup (1.0.9104)
  • search-engine-setup (1.0.9108)
  • vpmdhaj-opensearch-setup (1.0.9102)

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