Атака на Rust-пакеты: вредоносная зависимость заражает проекты через Cargo
20 августа пакеты append-only-vec, arrayref и internment подверглись компрометации. Злоумышленники использовали учётные записи сопровождающих или процесс выпуска пакетов, чтобы добавить вредоносную зависимость proc-macro1.
Количество загрузок затронутых пакетов составило приблизительно 4 миллиона для append-only-vec, 244 миллиона для arrayref и 14 миллионов для internment.
Поддельная зависимость маскировалась под легитимный пакет
proc-macro1 является опечаточной подделкой, typosquat, легитимного пакета proc-macro2. Вредоносный пакет имитирует его метаданные, информацию об авторе и документацию. Связанный с кампанией пакет proc-macro-en также выдавал себя за легитимного сопровождающего.
Вредоносный код находится в файле build.rs пакета proc-macro1. Cargo автоматически компилирует и выполняет этот файл в процессе сборки. Поэтому заражение возможно даже в том случае, если проект не вызывает функциональность скомпрометированного пакета.
Вредоносная нагрузка запускается во время сборки
Код маскирует адрес загрузки с помощью фрагментов, закодированных в Base64. Затем он выбирает payload в зависимости от операционной системы и архитектуры хоста и загружает его по HTTPS.
- На Linux и macOS payload записывается на диск, помечается как исполняемый файл и запускается как отсоединённый процесс с подавлением вывода.
- На Windows создаётся сценарий PowerShell.
- Для сохранения процесса после завершения сборки Cargo используются скрытые загрузчики
wscriptи VBScript.
Компиляция проекта, который зависит от любого из скомпрометированных пакетов, может привести к заражению без вызова функциональности этого пакета.
Восстановленные payloads работают как infostealers
Восстановленные payloads для Linux x86_64 и macOS ARM64 представляют собой infostealers, написанные на языке Rust. Они получают адрес command-and-control в качестве аргумента запуска, а не содержат его непосредственно в коде.
Dropper передаёт адрес 23.254.165.112:443, после чего вредоносное ПО взаимодействует с {host}/49890878.
На macOS payload нацелен на учётные данные, которые хранятся в браузерах на базе Chromium, включая Chrome, Brave и Edge. Для этого используются встроенные SQL-запросы к базам данных с логинами браузеров.
Вредоносное ПО обеспечивает persistence и удалённое выполнение команд
В payload присутствует шаблон LaunchAgent с параметром RunAtLoad. Это указывает на persistence на уровне пользователя через каталог ~/Library/LaunchAgents.
Вредоносное ПО регистрирует заражённые системы, передавая сведения о хосте и параметры платформы. В набор данных входят операционная система, архитектура, версия, приложение и поля электронной почты.
Диспетчер команд поддерживает следующие функции:
- конфигурирование;
- запуск;
- выполнение скриптов;
- выполнение команд в оболочке;
- ожидание по таймеру.
Набор возможностей указывает на периодический опрос C2 и удалённое выполнение команд.
Связь с предыдущими компрометациями npm
Кампания использует общую инфраструктуру, методы beaconing и техники внедрения зависимостей, которые наблюдались в предыдущих компрометациях npm. Она может быть связана с той же угрозой, которую связывают с КНДР.
Отчет получен из сервиса CTT Report Hub. Права на отчет принадлежат его владельцу.
Ознакомиться подробнее с отчетом можно по ссылке.



