Атака на цепочку поставок: через GitHub Actions в npm-пакеты AsyncAPI протащили троян Miasma

Атакующие скомпрометировали доверенные 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 — то есть места, где часто хранятся чувствительные учётные данные.