В npm нашли 14 вредоносных пакетов. Microsoft советует разработчикам срочно заменить ключи AWS и GitHub Actions

Банальная опечатка при поиске нужной утилиты приводила к немедленному взлому системы.


cakl2zq1zuh89jnfp34xe9gycttcuwzs.jpg

В атаках на разработчиков всё чаще хватает не взлома крупной платформы, а одного удачно замаскированного пакета. Свежий случай с npm показывает, как быстро вредоносный код может попасть в рабочие среды, где хранятся ключи от облаков, репозиториев и систем сборки.

Microsoft сообщила , что один пользователь npm за четыре часа опубликовал 14 вредоносных пакетов, похожих на популярные библиотеки для OpenSearch, Elasticsearch, DevOps-задач и настройки окружений. Для публикации использовался новый аккаунт мейнтейнера с псевдонимом vpmdhaj и адресом a39155771@gmail[.]com.

По данным Microsoft, автор атаки явно рассчитывал на разработчиков, у которых в окружении могут находиться учётные данные AWS, Elastic Cloud и других сервисов. Поддельные пакеты имитировали легитимные библиотеки из экосистем @opensearch и @elastic, а также были нацелены на Amazon Web Services, HashiCorp Vault, GitHub Actions и сам реестр npm.

Все 14 пакетов уже удалены. Microsoft опубликовала полный перечень названий и рекомендовала проверить системы, где затронутые версии могли устанавливаться или попадать в сборки начиная с 28 мая 2026 года. Потенциально скомпрометированные учётные данные AWS IAM/STS, HashiCorp Vault, публикации в npm и GitHub Actions лучше заменить.

Для обмана использовались два приёма. Часть пакетов получила названия с опечатками, близкие к настоящим библиотекам. Другие выглядели как вспомогательные инструменты для OpenSearch и Elasticsearch, например opensearch-setup-tool, opensearch-config-utility и elastic-opensearch-helper.

Дополнительно автор подменял метаданные, указывая в package.json ссылки на настоящий проект opensearch-js на GitHub, а номера версий сразу повышал до значений вроде 1.0.7265 или 2.1.9201, чтобы создать видимость зрелого проекта.

После установки вредоносный код запускался автоматически через preinstall-хуки. Первая версия загрузчика собирала данные о системе, включая имя хоста, платформу, архитектуру, версию Node.js, имя пользователя, рабочий каталог и сведения о пакете, а затем отправляла информацию на сервер управления. В ответ загружалась вторая стадия, сохранявшаяся как payload.bin.

Microsoft отмечает, что index.js повторно запускал payload.bin при каждом последующем подключении модуля, из-за чего вредоносная программа могла переживать несколько этапов сборки и повторные запуски в среде разработчика.

Более поздний вариант загрузчика действовал тише: проверял наличие Bun на хосте, при необходимости скачивал легитимную среду Bun v1.3.13 и запускал полезную нагрузку для кражи секретов из AWS , HashiCorp Vault, npm, GitHub Actions и других CI/CD-сред.