Хакери компрометираха акаунта на поддържащия широко използваната Rust библиотека (crate) arrayref, за да внедрят зловреден софтуер, който се изпълнява в системите на разработчиците по време на компилация.
В рамките на 23-минутен прозорец атакуващият отрови и две други библиотеки, append-only-vec и internment, при същата атака срещу веригата за доставки.
Библиотеката arrayref е популярна Rust библиотека с над 53 милиона изтегляния през последните 90 дни, която се използва от инструменти за криптография, графика и блокчейн.
Доклад на компанията за сигурност на приложения StepSecurity отбелязва, че компрометираните версии на Rust библиотеките са arrayref 0.3.10, append-only-vec 0.1.9 и internment 0.8.7, всички поддържани от един и същ акаунт.
Киберпрестъпникът е инжектирал зависимост към пакет, наречен proc-macro1 (typosquatting замяна, имитираща популярната библиотека 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 стартер, за да поддържа процеса активен.
Злонамереният код получава адрес като аргумент, за който се смята, че е адрес за управление и контрол (C2).
Според анализ на компанията за облачна сигурност Wiz, възможностите на втория етап от атаката включват извличане на информация за хоста и идентификационни данни.
Изследователите споделят, че зловредният софтуер събира пароли и данни за достъп от браузърите Google Chrome, Brave и Edge чрез заявки към SQLite базите данни за влизане.
Персистентност (постоянен достъп) се постига чрез ключа Registry Run в Windows, LaunchAgent в macOS и systemd в Linux.
Потенциалното въздействие на тази атака по веригата за доставки е значително, тъй като само arrayref има над 245 милиона изтегляния за целия си жизнен цикъл, докато общият брой за append-only-vec и internment е близо 19 милиона инсталации.
Проекти, използващи arrayref, включват blake3, Rust GUI платформи като egui, eframe и iced, както и компоненти, използвани в Ethereum и Solana.
Атаката е започнала в 01:17 UTC на 20 август, когато е създаден акаунт в GitHub, имитиращ известния Rust разработчик David Tolnay, последван от подобен акаунт в регистъра crates.io.
В 01:55 атакуващият публикува proc-macro1@1.0.106, легитимно копие на proc-macro2, последвано от зловредно обновяване чрез версия 1.0.107, публикувана в 07:11.
В 07:15 версия arrayref 0.3.10 е публикувана през легитимния акаунт droundy (David Roundy), докато версии от 0.3.5 до 0.3.9 са премахнати, вероятно за да се принуди инсталирането на компрометираната версия.
Инцидентът е докладван в 07:54. Crates.io изтрива proc-macro1 в 08:03 и премахва arrayref 0.3.10 от индекса в 08:41.
Компаниите за киберсигурност StepSecurity, SafeDep и Aikido публикуваха технически анализи на атаката по веригата за доставки и споделиха индикатори за компрометиране (IoC).
Изследователите от Wiz отбелязват, че „инфраструктурата на кампанията се припокрива с неотдавнашни атаки по веригата за доставки от страна на Северна Корея (DPRK), включително Mastra и axios.“
Разработчиците, които са инсталирали някоя от засегнатите библиотеки по време на прозореца на излагане от близо 1,5 часа, трябва да приемат, че системите им са компрометирани.
Препоръчителните проверки включват търсене в Cargo.lock файловете, проверка за създадените файлове и преглед на трафика към 23.254.165[.]112 на портове 9089 и 443.
При потвърдено компрометиране се препоръчва да се подменят всички достъпни идентификационни данни, CI токени, ключове за подписване и други тайни, както и да се пресъздаде работната среда от сигурни резервни копия.
За чистите проекти се препоръчва да фиксират известна сигурна версия на засегнатите зависимости, докато ситуацията с поддържащия акаунт бъде изяснена и разрешена.