Вредоносные Rust-пакеты с бэкдорами атаковали crates.io, заражая разработчиков вредоносным ПО во время сборки

Rust атака бэкдор crates.io цепочка поставок csoonline.com

Узнайте о вредоносных версиях трех пакетов Rust (arrayref и других), опубликованных на crates.io 20 августа. Разберитесь, как бэкдор активировался при компиляции проекта. Проверьте, как инфраструктура атаки связана с кампаниями хакеров из КНДР, и следуйте рекомендациям по защите.

20 августа в реестр crates.io были опубликованы вредоносные версии трех пакетов Rust, включая широко используемый arrayref, со встроенным бэкдором, который автоматически активировался при компиляции затронутых проектов.

Исследователи безопасности из компании Wiz заявили, что данная атака использует инфраструктуру, совпадающую с недавними кампаниями по атакам на цепочки поставок, приписываемыми северокорейским злоумышленникам.

Скомпрометированными релизами стали «arrayref@0.3.10», «internment@0.8.7» и «append-only-vec@0.1.9». Все они добавили зависимость от «proc-macro1» — это typosquatting-версия легитимного и широко скачиваемого пакета «proc-macro2».

Вредоносная зависимость содержала сборочный скрипт, который загружал и выполнял полезную нагрузку второго этапа во время компиляции, сообщили исследователи Wiz в блог-посте. «Полезная нагрузка второго этапа выбирается в зависимости от платформы, с поддержкой x86_64-версий Linux, Windows и macOS, а также aarch64 macOS», — добавили они.

В анализе компании StepSecurity отмечается, что общее количество загрузок arrayref за все время составило 245 миллионов, из которых 53,7 миллиона пришлись на последние 90 дней. По оценкам этой фирмы, занимающейся кибербезопасностью, окна уязвимости для каждого пакета составили 86, 90 и 107 минут соответственно, после чего все они были удалены вместе с другими связанными пакетами.

Об атаке впервые сообщили в RustSec и security@rust-lang.org исследователь jhobern, однако на тот момент было известно только о компрометации arrayref.

Вредоносный код выполнялся во время сборки

Атака не требовала от разработчиков выполнения подозрительного кода или даже вызова какой-либо функции из arrayref. «Поскольку сборочные скрипты Rust выполняются на этапе компиляции, для детонации полезной нагрузки было достаточно просто собрать любой проект, в lockfile которого был разрешен arrayref 0.3.10. Вызывать код самого пакета никогда не требуется», — отметили исследователи StepSecurity.

При сборке затронутого пакета файл конфигурации «Cargo.toml» добавлял proc-macro1 в качестве зависимости. Затем эта зависимость восстанавливала URL командно-контрольного (C2) сервера из фрагментов Base64, отключала проверку TLS-сертификатов, загружала полезную нагрузку для конкретной платформы и выполняла ее как часть обычного процесса сборки.

Исследователи Wiz обнаружили, что полезная нагрузка собирала информацию о хосте, имени пользователя и операционной системе, перечисляла установленные приложения, а также просматривала профили Chrome, Brave и Edge на предмет сохраненной информации для входа и данных расширений.

Она также могла закрепляться в системе через ключи Run реестра Windows, LaunchAgents macOS или systemd-сервисы пользователя Linux, а также принимать команды для перенастройки, завершения работы или загрузки и выполнения скриптов.

Полезная нагрузка поддерживала Linux, Windows и macOS, включая Mac на Apple Silicon. В ней был реализован резервный механизм генерации доменов, который мог создавать 10 доменов .com каждые пять дней в случае недоступности основного C2-сервера.

Связь с северокорейскими кампаниями

Wiz заявила, что инфраструктура полезной нагрузки «существенно пересекается» с операциями, приписываемыми недавним акторам из КНДР.

По их словам, наиболее сильная связь — это путь запроса C2. Бэкдор взаимодействует с конечной точкой, также использовавшейся в кампании Mastra, которую Microsoft связывает с группировкой Sapphire Sleet, ассоциированной с КНДР. IP-инфраструктура, использованная в кампании с arrayref, также использует общего эмитента SSL-сертификатов с инфраструктурой, связанной с той операцией.

Еще одна связь была обнаружена с кампанией по атаке на цепочку поставок npm-пакета Axios. Wiz сообщила, что одна жертва зафиксировала C2-трафик с IP-адресом, который также фигурировал в анализе атаки на Axios, проведенном Google Cloud Threat Intelligence; Mandiant связал эту атаку с Северной Кореей.

Wiz рекомендует организациям проверить файлы «Cargo.lock» и локальные кэши Cargo на предмет скомпрометированных версий и пакетов, контролируемых злоумышленником. Также отмечается, что любая рабочая станция разработчика или CI-сервер, на котором фактически собирался затронутый проект, должна считаться скомпрометированной, а все доступные учетные данные, токены и ключи необходимо отозвать и перевыпустить, пересобрав артефакты из чистых источников.

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

В тренде:


Похожие новости: