Хакеры взломали учетную запись разработчика широко используемого Rust-крейта arrayref, внедрив вредоносное ПО, которое выполнялось в системах разработчиков во время компиляции. В течение 23 минут злоумышленник также скомпрометировал два других крейта: append-only-vec и internment в рамках той же атаки на цепочку поставок. Arrayref - популярная библиотека Rust, которую за последние 90 дней скачали более 53 млн. раз. Она используется в криптографии, графике и инструментах для работы с блокчейном. В отчете StepSecurity отмечается, что вредоносные версии крейтов Rust - arrayref 0.3.10, append-only-vec 0.1.9 и internment 0.8.7 - поддерживались через одну и ту же учетную запись. Хакер внедрил зависимость от пакета под названием proc-macro1, представляющего собой опечатку, имитирующую популярный крейт proc-macro2, при этом полностью сохранив неизменным остальной исходный код проекта. По данным исследователей, скрипт в proc-macro1 под названием build.rs автоматически выполняется во время компиляции, восстанавливая свою инфраструктуру из фрагментов, закодированных в base64, и выбирая полезную нагрузку, соответствующую хостовой ОС (Linux x86-64, Windows x86-64, macOS x86-64 и macOS ARM64). StepSecurity полагает, что злоумышленник также опубликовал несколько версий четырех собственных крейтов (aovine, arone, aronenao, tinymember), которые были удалены с сайта crates.io. В системах Unix вредоносная ПО записывает данные в /tmp/rust-setup, помечает его как исполняемый файл и запускает как отсоединенный процесс. В Windows он создает файл %TEMP%\rust-setup.ps1 и использует скрытый файл wscript.exe и VBS-скрипт для запуска процесса. В качестве аргумента полезная нагрузка получает адрес, который, как предполагается, является адресом управления. Согласно анализу Wiz, возможности второго этапа включают в себя кражу информации о хостах и учетных данных. Исследователи утверждают, что вредоносная ПО собирает учетные данные из браузеров Google Chrome, Brave и Edge, обращаясь к базам данных авторизации SQLite. Сохранение состояния обеспечивается через ключ Run в реестре Windows, LaunchAgent в macOS и systemd в Linux. Потенциальные последствия этой атаки на цепочку поставок значительны, поскольку только arrayref имеет более 245 млн. загрузок за все время существования, в то время как совокупное количество установок append-only-vec и internment составляет почти 19 млн. В число проектов, использующих arrayref, входят blake3, графические фреймворки на Rust, такие как egui, eframe и iced, а также компоненты, используемые в Ethereum и Solana. Атака началась в 01:17 UTC 20 августа, когда был создан аккаунт на GitHub, выдающий себя за известного разработчика Rust Дэвида Толнея, а затем аналогичный аккаунт был создан в реестре crates.io. В 01:55 злоумышленник опубликовал proc-macro1@1.0.106, безобидную копию proc-macro2, а затем вредоносное обновление до версии 1.0.107, опубликованное в 7:11. Об инциденте стало известно в 07:54. Crates.io удалил proc-macro1 в 08:03 и arrayref 0.3.10 из индекса в 08:41. В 07:15 arrayref 0.3.10 был опубликован через легитимный аккаунт droundy (Дэвид Раунди), в то время как версии 0.3.5-0.3.9 были удалены, возможно, для принудительной установки вредоносной версии. StepSecurity, SafeDep и Aikido опубликовали технический анализ атаки на цепочку поставок и поделились IOCs.