VMTech
Обсудить проект

В crates.io удалили вредоносные версии популярных Rust-пакетов

В crates.io удалили вредоносные версии популярных Rust-пакетов

Проект Rust удалил из crates.io вредоносные версии трёх пакетов: arrayref 0.3.10, internment 0.8.7 и append-only-vec 0.1.9. Релизы появились 20 августа 2026 года из одной учётной записи и оставались доступными от 86 до 107 минут. Особое внимание привлекает arrayref: у пакета 245 385 500 загрузок за всё время и 403 зависимых crate.

Вредоносный код срабатывал при сборке

Во все скомпрометированные релизы была добавлена зависимость proc-macro1 — опечаточный двойник широко используемого proc-macro2. Исходный код библиотеки копировал легитимный пакет, поэтому сборка могла завершаться без явных ошибок. Опасная логика находилась в build-скрипте добавленной зависимости.

Rust Security Response Team получила сообщение о proc-macro1 в 07:15 UTC и подтвердила, что скрипт скачивает вредоносную нагрузку. Для запуска не требовалось вызывать функции затронутых библиотек: достаточно было собрать проект, разрешивший такую зависимость. Триггером могли стать команды cargo build, cargo check и cargo test.

Скрипт собирал адрес сервера и управляющего узла из фрагментов base64, отключал проверку TLS-сертификатов и выбирал один из четырёх вариантов нагрузки по ОС и архитектуре процессора. В Unix и macOS он записывал исполняемый файл в /tmp/rust-setup и запускал его в фоне. В Windows создавались PowerShell-скрипт и VBScript-запускатор, который стартовал через wscript.exe.

Как пакет попадал в дерево зависимостей

Одновременно с публикацией arrayref 0.3.10 владелец аккаунта отозвал версии 0.3.5–0.3.9. По сообщению исследователя, это подталкивало Cargo предложить обновление до единственной неотозванной версии в ветке 0.3.x. Диапазоны зависимостей с символом ^ для 0.3.x допускают установку 0.3.10.

В цепочке зависимостей, проверенной через индекс crates.io, winit требует sctk-adwaita ^0.10.1, тот — tiny-skia ^0.11, а tiny-skia — arrayref ^0.3.6. Пакеты blake3, blake2b_simd и blake2s_simd выпустили обновления, исключающие arrayref, в день инцидента.

Что известно о последствиях и защите

RustSec выпустил уведомления по всем трём пакетам, но отметил отсутствие подтверждённых случаев использования вредоносных версий. Исправленного релиза нет, идентификатор CVE также не назначен. Команда Rust считает, что автор arrayref, вероятно, не действовал злонамеренно, а его компьютер или учётные данные могли быть скомпрометированы.

Вторая стадия вредоносной программы, по данным Wiz, поддерживала закрепление через Registry Run key в Windows, LaunchAgent в macOS и пользовательский сервис systemd в Linux. Исследователи также описали HTTPS-связь с управляющим сервером и команды для прекращения работы, смены адреса управления, установки закрепления и загрузки дополнительных скриптов. В контексте атак на цепочки поставки атаки на цепочки поставки программного обеспечения показывает, почему одной проверки прямых зависимостей недостаточно.

Разработчикам рекомендовано проверить каталог ~/.cargo/registry/cache на удалённые архивы и закрепить arrayref на версии 0.3.9 или ниже. Для бизнеса этот случай означает, что контроль зависимостей должен охватывать и этап сборки: build-скрипт транзитивного пакета способен выполнить код до запуска приложения.

#rustsecurity#supplychain#buildsecurity#malware
Открытая аналитика
На сайте 0 просмотров
мин чтения 3 21.08.2026
Instagram

В crates.io удалили вредоносные версии популярных Rust-пакетов

Открыть публикацию в Instagram ↗