На части заражённых Windows-машин обнаружили PowerShell-бэкдор с правами SYSTEM.

Более 140 пакетов из экосистемы Mastra для создания ИИ-приложений заразили через npm. Вредоносный код запускался сразу после npm install или npm update, поэтому заражение могло затронуть рабочие компьютеры разработчиков и серверы сборки, даже когда пакет не подключали к коду приложения, сообщает Microsoft.
Злоумышленники получили доступ к учётной записи npm-разработчика ehindero, имевшей право публиковать обновления в пространствах имён mastra и @mastra. Через захваченный аккаунт атакующие выпустили заражённые версии пакетов и добавили в каждый зависимость easy-day-js@^1.11.21. Все вредоносные релизы получили метку latest, поэтому npm автоматически выбирал их при установке.
Аномалию заметили по истории публикаций. Версии mastra до 1.13.0 выходили через GitHub Actions с проверкой происхождения сборки, а mastra 1.13.1 опубликовали вручную с адреса анонимного почтового сервиса. В репозитории Mastra не нашли изменений, которые объясняли бы появление новой зависимости.
Пакет easy-day-js маскировался под популярную библиотеку dayjs, которую еженедельно скачивают более 57 млн раз. Авторы скопировали описание, ссылку на репозиторий и имя настоящего разработчика. Первую версию easy-day-js 1.11.21 загрузили 16 июня без вредоносного кода, а 17 июня выпустили версию 1.11.22. Код библиотеки остался прежним, но в файл package.json добавили обработчик postinstall, запускавший скрытый скрипт setup.cjs.
После установки скрипт отключал проверку TLS-сертификатов, создавал служебные файлы в системной временной папке и загружал с управляющего сервера вторую часть программы. Полученный код сохранялся под случайным именем, запускался отдельным скрытым процессом Node.js и затем ждал новых команд. Атакующие могли выполнять произвольный код на заражённой машине, менять настройки программы или завершать работу импланта.
В Windows, macOS и Linux вредоносная программа закреплялась в системе и маскировалась под компоненты Node.js и NVM. В Windows использовалась запись в автозагрузке, в macOS создавался LaunchAgent, а в Linux добавлялась пользовательская служба systemd. Программа собирала имя компьютера, сведения о пользователе, установленных приложениях и работающих процессах, историю браузера, а также искала расширения криптокошельков в Chrome, Edge и Brave. В списке были идентификаторы 166 кошельков, включая MetaMask, Phantom, Coinbase Wallet и Binance Wallet.
На части заражённых Windows-компьютеров Microsoft зафиксировала загрузку PowerShell-бэкдора с отдельной инфраструктуры. Бэкдор удалял историю PowerShell, добавлял исключение для Microsoft Defender и устанавливал службу с правами SYSTEM. Microsoft с высокой уверенностью связала кампанию с северокорейской группировкой Sapphire Sleet, которая чаще всего атакует финансовые организации.
Microsoft передала сведения команде безопасности npm. Заражённые версии удалили из реестра, а у атакующего отозвали права на публикацию пакетов в пространстве имён @mastra. Разработчикам советуют проверить package-lock.json, node_modules и журналы CI/CD на наличие easy-day-js, сменить токены, пароли и API-ключи с потенциально заражённых машин, а также изучить исходящие подключения к адресам серверов управления. Безопасными Microsoft называет mastra 1.13.0 и более ранние версии, а также @mastra/core 1.42.0 и более ранние версии. При проверке зависимостей установку можно запускать с параметром --ignore-scripts, чтобы npm не выполнял обработчики postinstall.