Три пакета Rust с 235 млн. скачиваний. 23 минуты на взлом. В экосистеме Rust обнаружена диверсия против разработчиков

Годы репутации разработчика против 23 минут хакерской атаки на его пакеты.


iwmkn9j51wg8fah8c5ktsh5qfvhqqbxw.jpg

Злоумышленники незаметно встроили вредоносный код сразу в три популярные библиотеки Rust, причем чтобы заразить компьютер, разработчику было достаточно просто собрать свой проект. Под удар попали arrayref, internment и append-only-vec, а инфраструктура операции пересекается с серверами, которые связывают с северокорейскими хакерами .

Команда безопасности Rust сообщила , что 20 августа в каталог crates.io загрузили вредоносные arrayref 0.3.10, internment 0.8.7 и append-only-vec 0.1.9. Все три библиотеки поддерживал разработчик Дэвид Раунди. Специалисты считают, что злоумышленники скомпрометировали его компьютер или учетные данные, а не самого разработчика.

Масштаб инцидента оказался значительным. Arrayref загрузили около 245 млн раз за все время, и, по данным Wiz, пакет встречается более чем в 35% изученных сред и примерно в 75% сред, где используется Rust. Злоумышленники впервые за десятилетнюю историю arrayref добавили в библиотеку зависимость, указав пакет proc-macro1 1.0.107.

Название proc-macro1 имитировало популярный легитимный пакет proc-macro2. Сначала злоумышленники опубликовали безвредную копию proc-macro2 под версией 1.0.106, создав пакету историю, а спустя несколько часов выпустили вредоносную 1.0.107. Ее сценарий сборки автоматически запускался Cargo и загружал программу с сервера 23.254.165[.]112. Поэтому разработчику не требовалось вызывать функции зараженной библиотеки – хватало просто собрать проект.

Вредонос поддерживал Linux, Windows и macOS на разных архитектурах. Специалисты Aikido проанализировали находку и установили, что программа собирала сведения о системе, просматривала профили Chrome, Brave и Edge, включая сохраненные имена пользователей и данные расширений, закреплялась в системе и принимала команды с управляющего сервера. Пароли из хранилищ браузеров проанализированные образцы не расшифровывали.

Атаку подготовили заранее. 20 августа в 07:11 UTC появилась вредоносная proc-macro1 1.0.107, в 07:15 вышла arrayref 0.3.10, затем в 07:34 и 07:37 появились internment 0.8.7 и append-only-vec 0.1.9. Таким образом, все три зараженные версии выпустили за 23 минуты. Одновременно старые безопасные версии arrayref массово пометили как отозванные, что могло подтолкнуть Cargo и разработчиков обновиться.

Специалисты Wiz обнаружили , что инфраструктура заметно пересекается с северокорейскими операциями. Путь /49890878 на управляющем сервере ранее встречался в кампании Mastra, которую Microsoft связывала с группировкой Sapphire Sleet. Используемые адреса также пересекаются с инфраструктурой операции UNC1069 против пакета axios, которую Mandiant связывала с КНДР. Прямую принадлежность новой атаки конкретной группировке пока не подтвердили.

Команда Rust удалила вредоносные пакеты и заблокировала учетные записи. Arrayref 0.3.10 находилась в crates.io 86 минут, internment 0.8.7 – 90 минут, а append-only-vec 0.1.9 – 107 минут. Разработчикам рекомендуют проверить Cargo.lock и локальный кэш Cargo на эти версии, а системы, где их успели собрать, считать потенциально скомпрометированными.