
Шкідливий Rust-крейт arrayref запускає код під час збірки
Версія 0.3.10 крейта arrayref на crates.io додала залежність від схожого на proc-macro2 пакета, чий build-скрипт під час компіляції завантажує і запускає віддалений бінарник. Шкідливі версії видалено.
20 серпня 2026 року на crates.io з’явився скомпрометований випуск популярного Rust-крейта arrayref. Версія 0.3.10 додала залежність від тайпсквот-крейта proc-macro1, чий build-скрипт під час компіляції завантажує і запускає віддалений бінарник. Код виконується на етапі збірки, тож достатньо скомпілювати проєкт, який підтягнув погані версії. Команда crates.io вже видалила шкідливі випуски.
Які пакети зачеплені
Справжні крейти arrayref та append-only-vec супроводжує droundy, чий акаунт, схоже, зламали: відповідні репозиторії на GitHub більше недоступні. Крейт proc-macro1 опублікував акаунт dtolney, що дуже нагадує справжній нік dtolnay; у метаданих автором вказано David Tolnay, а поле repository веде на шлях, який повертає 404.
Шкідливі версії: arrayref 0.3.10, internment 0.8.7, append-only-vec 0.1.9, а також proc-macro1, proc-macro-en, aovine, arone, aronenao і tinymember. proc-macro1 — не справжній proc-macro2: його тека src є копією proc-macro2, тому збірки працювали, а підміна була малопомітною.
Що робить build-скрипт
Корисне навантаження міститься в build-скрипті proc-macro1 1.0.107. Адресу сервера розбито на base64-фрагменти й зібрано під час збірки; після декодування виходить хост hxxps://23.254.165.112:9089/ і адреса C2 23.254.165.112:443. Скрипт завантажує бінарник під конкретну архітектуру через TLS без перевірки сертифікатів, а потім від’єднує його від збірки: на Unix запускає /tmp/rust-setup, на Windows пише PowerShell-скрипт і VBScript-лаунчер у %TEMP% і стартує їх приховано.
Як це поширювалося
Власник акаунта відкликав (yank) старіші випуски arrayref від 0.3.5 до 0.3.9. Після цього Cargo попереджає й підштовхує розробників до єдиної не відкликаної версії — шкідливої 0.3.10. Саме так, за словами автора звернення до RustSec, це сталося і з ним.
arrayref широко використовують як транзитивну залежність: він лежить глибоко в графах tiny-skia, sctk-adwaita і winit, а отже під більшістю GUI-проєктів на egui, eframe та iced. Крейт має близько 245 мільйонів завантажень за весь час, з них чиста версія 0.3.9 — приблизно 152 мільйони. У звіті SafeDep наведено SHA256 видалених артефактів і мережеві індикатори.
SiTech — веброзробка з підтримкою AI
Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.