Основна атака по веригата за доставки, насочена срещу екосистемата на Rust, при която два широко използвани пакета (crates) – arrayref и append-only-vec – бяха отвлечени, за да доставят тайно зловреден код в момента, в който разработчиците компилират проектите си.
Заедно двата пакета имат стотици милиони изтегляния, което прави това едно от най-големите компрометирания на Rust пакети, регистрирани някога по обем на изтеглянията.
Изследователи от Aikido Security първи забелязаха нов, подозрителен пакет, наречен proc-macro1, който тихомълком изтегля и изпълнява отдалечен файл по време на процеса на компилация.
Името беше умишлен тайпоскуатинг на proc-macro2 – един от най-използваните пакети в света на Rust – и копираше описанието и документацията на легитимния пакет, за да изглежда надежден.
В рамките на същия час arrayref и append-only-vec, и двата поддържани от един и същ разработчик, внезапно добавиха proc-macro1 като зависимост, превръщайки изолирания тайпоскуатинг в пълномащабен инцидент по веригата за доставки.
Самото компрометиране беше маскирано в един-единствен инжектиран ред в манифестния файл на всеки пакет, сочещ към proc-macro1 версия 1.0.107.
От решаващо значение е, че видимият изходен код на arrayref и append-only-vec остана непроменен и легитимен, така че ръчен преглед на кода не би събудил тревога.
Истинската опасност беше скрита в скрипта build.rs на proc-macro1 – файл, който Cargo автоматично компилира и изпълнява при всяко изграждане, което означава, че разработчиците не е трябвало да извикват никаква функция от компрометираните пакети, за да бъдат инфектирани.
Тази техника подчертава как атакуващите експлоатират конфигурациите за компилация, отразявайки рисковете, наблюдавани при компрометирани инструменти за разработчици в екосистемите с отворен код.
След като бъде задействан, скриптът за компилация изтегля специфичен за платформата двоичен файл за Linux, Windows или macOS от отдалечен сървър, идентифициран само с IP адрес, като дестинацията е замъглена с помощта на base64-кодирани фрагменти, за да се избегнат скенерите, базирани на сигнатури.
При системите Unix и macOS зловредният софтуер записва зловредния код на диска, маркира го като изпълним и го стартира като отделен фонов процес, така че да продължи да работи дори след приключване на компилацията, според доклада на Aikido Security.
Анализът на възстановените двоични файлове разкри софтуер за кражба на информация (infostealer), способен да събира запазени идентификационни данни от браузъри, базирани на Chromium, като Chrome, Brave и Edge, заедно с данни от хранилището за разширения на браузъра – местоположение, често използвано от разширения за криптовалутни портфейли. Това функционално припокриване отразява възможностите, намиращи се в специализирания зловреден софтуер за кражба на данни, проектиран за бързо изброяване на хостове.
Зловредният софтуер също така си осигурява устойчивост на macOS чрез LaunchAgent, конфигуриран да се стартира отново при всяко влизане в системата, и поддържа връзка с команден сървър (C2), способен да издава отдалечени команди към обвивката (shell).
Екипът за реагиране на проблеми със сигурността на Rust (Rust Security Response Team) потвърди злонамерения скрипт за компилация и предприе действия за изтриване на proc-macro1 заедно със свързани подобни пакети като proc-macro-en, aovine, arone, aronenao и tinymember.
Екипът също така премахна компрометираните версии – arrayref 0.3.10, append-only-vec 0.1.9 и internment 0.8.7, и блокира акаунта на компрометирания поддръжник като предпазна мярка, отбелязвайки, че притежателят на акаунта изглежда е жертва на откраднати идентификационни данни, а не вътрешен злонамерен субект.
Засегнатият поддръжник е Андрю Галант, известен в общността като BurntSushi и създател на популярния инструмент ripgrep. Докладите показват, че цялата злонамерена кампания, от първото публикуване на компрометирана версия до отстраняването ѝ, се е разиграла в рамките на приблизително двучасов прозорец на 20 август 2026 г.
Екипите, които са компилирали Rust проекти по време на прозореца на инцидента, трябва да третират своите CI конвейери и локални кешове за компилация като потенциално компрометирани и да инспектират кеша на Cargo регистъра за злонамерените файлове на пакети.
Фиксирането на arrayref на версия под 0.3.10, одитът на последните регистрационни файлове за компилация и активирането на двуфакторно удостоверяване (2FA) за акаунтите в crates.io са препоръчителните незабавни стъпки.
Поддържането на строг процес за отстраняване на уязвимости във всички среди за компилация гарантира, че автоматизираните конвейери остават защитени срещу злонамерени зависимости.