Атакующие скомпрометировали доверенные npm-пакеты проекта AsyncAPI, воспользовавшись уязвимой настройкой GitHub Actions. В легитимные пакеты внедрили вредонос Miasma — а суммарно эти пакеты качают около 2,9 млн раз в неделю.
Как проникли
Слабым звеном оказалась конфигурация GitHub Actions, при которой непроверенное содержимое из pull request могло взаимодействовать с привилегированным контекстом рабочего процесса. Через это атакующие получили автоматизированную «личность» AsyncAPI и смогли вносить несанкционированные правки в репозиторий.
Действовали хитро: не трогали пакеты напрямую, а положили вредоносный код в ветку, связанную с процессом релиза, замаскировав его под обычную рабочую активность. Дальше собственная система публикации AsyncAPI сама разложила заражённые пакеты по легитимному пространству имён в npm.
Что заразили
Выявлено пять вредоносных релизов:
@asyncapi/generatorверсии 3.3.1;@asyncapi/generator-helpersверсии 1.1.1;@asyncapi/generator-componentsверсии 0.7.1;@asyncapi/specsверсий 6.11.2-alpha.1 и 6.11.2.
Как работал вредонос
Внедрённый JavaScript обходил стандартные lifecycle-скрипты npm вроде postinstall и запускался не при установке, а при импорте модуля. Благодаря этому вредонос тихо ждал своего часа и срабатывал позже — во время сборки, запуска приложения, генерации документации или задачи CI/CD.
Код первой стадии запускал отдельный процесс Node.js и скачивал зашифрованную вторую стадию из IPFS. По описанию исследователей, это средство удалённого доступа: умеет закрепляться в системе, выполнять команды, работать с файлами и обновлять само себя. В качестве резервного канала управления вредонос использовал смарт-контракт Ethereum (0x1969ab05d67b67fdcaa26240f738ccb077e1cd84), где хранил настройки — запасные адреса и стартовые данные.
Активность обнаружили в Cato Networks через мониторинг угроз в цепочках поставок и передали данные изданию Cyber Security News.
Чем это грозит
Под ударом оказались рабочие станции разработчиков, процессы сборки документации и пайплайны CI/CD — то есть места, где часто хранятся чувствительные учётные данные.