На этой неделе хакеры внедрили вредоносное ПО в несколько популярных пакетов Rust, превратив рутинную сборку программного обеспечения в путь проникновения на машины разработчиков.
Команда безопасности Rust раскрыла атаку на цепочку поставок в четверг после получения сообщения о крейте proc-macro1. Расследование показало, что его скрипт сборки загружал вредоносное ПО с удаленного сервера.
Атака не ограничилась одним сомнительным крейтом. Кто-то опубликовал новую версию arrayref, легитимного и широко используемого пакета Rust, добавив proc-macro1 в качестве зависимости. Злоумышленник также отозвал недавние легитимные релизы arrayref, направляя пользователей к отравленному релизу.
Команда Rust не считает, что ответственность лежит на мейнтейнере arrayref. Предполагается, что компьютер разработчика или его учетные данные были скомпрометированы, и учетная запись была заблокирована при попытке связаться с ним. Злоумышленник также опубликовал вредоносные версии двух других крейтов того же разработчика: internment и append-only-vec.
Отравленные релизы просуществовали недолго. Arrayref 0.3.10 был доступен на crates.io в течение 86 минут, internment 0.8.7 — 90 минут, а append-only-vec 0.1.9 — 107 минут, после чего были удалены.
Это узкое окно, но arrayref — не забытый пакет, пылящийся в реестре. Компания по кибербезопасности Aikido, которая провела отдельный анализ атаки, оценивает количество загрузок arrayref примерно в 245 миллионов за все время, а append-only-vec — более 4 миллионов. Однако эти цифры не говорят нам, сколько разработчиков скачали вредоносные версии за короткий период их активности.
Aikido выяснила, что злоумышленник в основном оставил легитимный исходный код нетронутым, добавив только зависимость от proc-macro1 — опечатку легитимного пакета proc-macro2. Вредоносный код был спрятан внутри файла build.rs крейта proc-macro1.
Cargo, менеджер пакетов Rust, запускает скрипты сборки во время компиляции. Это позволило proc-macro1 определить операционную систему и архитектуру процессора машины разработчика или сборки, загрузить соответствующую полезную нагрузку и выполнить ее. Aikido обнаружила вредоносное ПО, созданное для Linux, Windows, Intel Mac и Apple Silicon Mac.
Полезная нагрузка второго этапа была не просто загрузчиком. Aikido обнаружила код, нацеленный на данные браузеров на основе Chromium, включая профили Google Chrome, Brave и Microsoft Edge, а также хранилища расширений браузеров, используемые криптовалютными кошельками. Также была обнаружена функциональность для закрепления в системе и получения команд с сервера злоумышленника.
Команда Rust также удалила крейты proc-macro-en, aovine, arone, aronenao и tinymember, предупредив, что все версии этих крейтов следует считать вредоносными. Разработчиков призвали проверить свои Cargo lockfiles и локальные кеши реестра на наличие затронутых пакетов.
Rust благодарит исследовательскую группу Nextron Systems за первоначальное обнаружение и сообщение об атаке. Не сообщается, как был скомпрометирован легитимный мейнтейнер, сколько разработчиков скачали отравленные релизы и сколько систем в конечном итоге выполнили полезную нагрузку.
Вредоносные пакеты могли пробыть на crates.io менее двух часов, но тот, кто стоял за ними, выбрал хорошо проторенный путь к машинам разработчиков. ®
Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.
Автор – Carly Page




