Скомпрометированные пакеты AsyncAPI в npm распространяли многоступенчатый ботнет-загрузчик

Специалисты OX Security, SafeDep, Socket и StepSecurity обнаружили четыре скомпрометированных npm-пакета из пространства имен @asyncapi, которые распространяли многоступенчатый загрузчик ботнета.

Под угрозой оказались следующие версии пакетов:

  • @asyncapi/generator-helpers@1.1.1

  • @asyncapi/generator-components@0.7.1

  • @asyncapi/generator@3.3.1

  • @asyncapi/specs (6.11.2 и 6.11.2-alpha.1)

По данным Socket, зараженные пакеты содержали обфусцированный полезный код первого этапа, который загружал из сети IPFS зашифрованный второй этап атаки, получивший название Miasma.

Каждый пакет содержал скрытый JavaScript-имплант с внедренным исходным файлом, который декодировался в одинаковый загрузчик второго этапа. В отличие от предыдущих подобных атак, где выполнение вредоносного JavaScript запускалось через install-хуки, в данном случае код активируется при загрузке зараженного модуля Node.js. После этого создается отдельный фоновый процесс Node.js, который скачивает и запускает вредоносное ПО из IPFS.

Следующий этап представляет собой зашифрованный JavaScript-загрузчик sync.js, который записывается в путь, соответствующий используемой операционной системе, после чего выполняется. Для загрузки используется адрес:

ipfs://QmQobZSp1wRPrpSEQ56qnyq7ecZh5Bg5k1fnjt4SUwwHb9

Загрузчик включает два компонента:

  • зашифрованный финальный JavaScript-пейлоад, который после расшифровки представляет собой фреймворк управления Miasma;

  • крупный зашифрованный блок данных, используемый механизмом spawn-chain.

Фреймворк включает 744 модуля и представляет собой платформу удаленного управления, поддерживающую сразу шесть независимых каналов связи с серверами управления (C2):

  • HTTP;

  • Nostr Relay;

  • IPFS;

  • BitTorrent DHT;

  • P2P-сеть libp2p GossipSub;

  • смарт-контракт Ethereum.

Помимо кражи учетных данных, заражения AI-инструментов, горизонтального распространения внутри локальной сети и червеобразного распространения через реестры npm, PyPI и Cargo, Miasma реализует собственные механизмы закрепления в системе. Для этого используются:

  • systemd;

  • crontab;

  • launchd в macOS;

  • ключи автозапуска в реестре Windows.

Исследователь OX Security Моше Симан Тов Бустан отметил, что хотя вредоносная программа имеет определенные сходства с кампаниями Shai-Hulud и Miasma, а строка Miasma неоднократно встречается в ее коде, данный образец не является их продолжением и не связан с ранее известными кампаниями Miasma, Shai-Hulud или TeamPCP.

Кроме того, вредоносное ПО содержит механизм "мертвого выключателя" (dead man's switch). Он отслеживает украденный токен и при его отзыве инициирует удаление каталогов. Также программа избегает выполнения в песочницах и виртуальных средах, не активируется в системах с русским языком и пытается не работать на устройствах, где обнаружены средства защиты CrowdStrike, SentinelOne, Microsoft Defender, CarbonBlack, Cylance, Osquery, Tanium и Qualys.

Основным способом взаимодействия с инфраструктурой злоумышленников является REST-интерфейс. Имплант регулярно отправляет запросы на HTTP-сервер управления, получает зашифрованные команды и передает результаты их выполнения обратно. Помимо этого, вредоносный код поддерживает передачу файлов, шифрование команд, цифровую подпись узлов, обновление полезной нагрузки, управление файлами, выполнение команд оболочки и сохранение постоянного присутствия в системе.

По информации StepSecurity, злоумышленникам удалось получить право отправки изменений в репозитории AsyncAPI. Для публикации зараженных пакетов они использовали официальный GitHub Actions-процесс выпуска проекта, благодаря чему пакеты получили действительные OIDC-аттестации происхождения. При этом компрометации npm-токена не произошло.

Как отметил исследователь StepSecurity Рохан Прабху, обе атаки были связаны именно с компрометацией CI/CD-пайплайнов, а не с кражей npm-токенов или действиями сопровождающих проекта. Злоумышленник отправил коммиты, используя фиктивную Git-учетную запись, после чего стандартный процесс публикации через GitHub OIDC Trusted Publisher автоматически выпустил новые версии пакетов.

В результате опубликованные пакеты получили легитимные аттестации происхождения SLSA. Однако такие аттестации подтверждают лишь то, что пакет был собран официальным процессом публикации проекта, но не гарантируют легитимность коммитов, которые этот процесс запустили. Таким образом, механизм provenance не способен защитить от компрометации прав на отправку изменений в репозиторий.

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

StepSecurity отдельно отмечает, что ни в одном из файлов package.json отсутствовали сценарии preinstall, install или postinstall. Загрузчик активировался только после вызова зараженного модуля через require() во время обычной работы библиотеки. Это означает, что выполнение вредоносного кода происходило не во время установки пакета через npm, а непосредственно при использовании библиотеки в процессе сборки или выполнения CI-задачи.

Источник: HN

Похожие статьи

Рекомендательные технологии Подробнее
Кибербезопасность 3 месяца назад

Уязвимость в Apache ActiveMQ позволяет выполнять команды удалённо

Критическая уязвимость в Apache ActiveMQ существовала более 13 лет и позволяет удалённо выполнять команды на сервере. Она уже используется в реальных атаках, включая распространение ransomware.

Кибербезопасность 4 месяца назад

Масштабная угроза: критические уязвимости в популярных расширениях VS Code

Исследователи обнаружили опасные уязвимости в четырёх популярных расширениях Visual Studio Code с более чем 125 млн установок, которые могут приводить к краже файлов и удалённому выполнению кода. В статье объясняется, какие расширения затронуты, чем опасны ошибки и как снизить риски.

Кибербезопасность 1 месяц назад

152 расширения Chrome с 105 тысячами установок уличили в распространении adware и подделке трафика

Исследователи выявили сеть из 152 расширений Chrome, распространявших потенциально нежелательное ПО и подделывавших источники трафика. Расширения имитировали органические переходы из Google и собирали данные пользователей вопреки заявлениям в магазине Chrome.