Атака на Rust-пакеты: вредоносный build.rs в цепочке поставок
20 августа 2026 года через легитимный, но, по всей видимости, скомпрометированный аккаунт сопровождающего были опубликованы вредоносные версии Rust-пакетов arrayref 0.3.10, internment 0.8.7 и append-only-vec 0.1.9. Затронутые релизы оставались доступными от 86 до 107 минут, после чего их удалили.
Атака запускалась во время сборки
В arrayref 0.3.10 добавили зависимость proc-macro1 1.0.107. Это тайпсквоттинг, подделка названия легитимного пакета proc-macro2.
Файл build.rs выполнялся автоматически во время cargo build. Для запуска атаки было достаточно разрешения зависимости, вызывать функции arrayref не требовалось.
Скрипт сборки восстанавливал URL инфраструктуры злоумышленника, отключал проверку сертификатов TLS, загружал полезную нагрузку, специфичную для операционной системы, и выполнял ее с привилегиями пользователя, который инициировал компиляцию.
Полезные нагрузки были нацелены на следующие платформы:
x86_64 Linux;Windows;macOS;aarch64 macOS.
На Unix-подобных системах файлы сохранялись как /tmp/rust-setup, а в Windows использовались временные файлы PowerShell или VBS. Сборка, как правило, завершалась успешно, что маскировало дополнительную активность процессов.
Функции second-stage malware
Второстепенное вредоносное ПО, second-stage malware, взаимодействовало с сервером управления через HTTPS-запросы POST к пути /49890878. Оно передавало информацию об узле и собранные данные, закодированные в формате Base64 JSON.
Вредоносная программа обращалась к базам данных профилей SQLite браузеров Chrome, Brave и Edge. Из них извлекались метаданные сохраненных логинов и расширений. По имеющимся данным, зашифрованные материалы паролей не извлекались.
Механизмы закрепления, persistence, включали:
- ключи
Runв реестреWindows; LaunchAgentsвmacOS;- пользовательские службы
systemdвLinux.
Бэкдор поддерживал завершение работы, перенастройку C2, установку механизмов закрепления, а также загрузку и выполнение дополнительных скриптов.
Для конфигурации применялся алгоритм AES-128-GCM. Встроенный ключ RSA-2048 использовался для аутентификации команд. Алгоритм генерации доменных имен, DGA, создавал десять доменов .com каждые пять дней.
Как была усилена атака
Злоумышленник отозвал легитимные версии arrayref 0.3.5–0.3.9. Это потенциально могло направить пользователей Cargo к вредоносному релизу.
Закоммиченные файлы блокировки, lockfiles, созданные до инцидента, могли предотвратить воздействие. При свежем разрешении зависимостей пользователи оставались под угрозой.
Файлы блокировки и кэши позволяют установить, была ли разрешена вредоносная версия. Подтвердить ее выполнение может только телеметрия хоста.
Индикаторы компрометации
К релевантным индикаторам относятся:
- процессы, происходящие от
Cargoи устанавливающие соединение с23.254.165.112:9089; - зафиксированная
C2-активность с участием23.254.167.216; POST-запросы к пути/49890878;- созданные временные файлы;
- доступ к базе данных браузера;
- дочерние процессы, сохранившиеся после завершения сборки;
- новые записи механизмов закрепления.
Рекомендации для затронутых проектов
Затронутым проектам необходимо:
- откатиться до версии
arrayref0.3.9 или более ранней; - пересобрать артефакты из чистых сред;
- заменить скомпрометированные
CI-раннеры; - удалить вредоносное ПО и механизмы закрепления;
- обновить учетные данные, токены, облачные ключи, ключи подписи и сессии, связанные с браузером.
Отчет получен из сервиса CTT Report Hub. Права на отчет принадлежат его владельцу.
Ознакомиться подробнее с отчетом можно по ссылке.



