Безопасность
Уязвимости, вредоносные крейты и инциденты безопасности экосистемы.
Bytecode Alliance выпустила три бюллетеня безопасности по крейтам wasmtime-wasi и wasmtime-wasi-http: паника в wasi:http при нулевом таймауте, избыточное выделение памяти на хосте при отсутствии stdio у гостя и копирование неинициализированного выравнивания в память гостя. Бюллетени вышли 2 октября 2026 года.
Скрипт сборки rustpython-vm 0.3.0 — 0.5.0 записывает каждую переменную окружения сборки в $OUT_DIR/env_vars.rs. Крейт компилирует этот файл в модуль build_time_vars внутри _sysconfigdata, а модуль компилируется всегда.
Команда реагирования на проблемы безопасности Rust получила сообщение: Miri сохраняет все переменные окружения в каталог target/, из-за чего секреты оседают в кеше сборки.
Команда реагирования на проблемы безопасности Rust предупредила о продолжающейся кампании, нацеленной на участников проекта и владельцев популярных крейтов. Цель — скомпрометировать устройства и учётные записи, чтобы публиковать через них вредоносное.
20 августа в 07:15 UTC команда безопасности Rust получила сообщение о вредоносном крейте proc-macro1: у него был сборочный скрипт, скачивавший вредоносную нагрузку. Разбираясь в цепочке, команда обнаружила, что пострадал популярный крейт arrayref.
В функции, раздваивающей общее владение при попытке изменить значение, исправлено несколько ошибок: утечка памяти, обращение к освобождённой памяти и неверное поведение при исчерпании памяти.
Cargo неправильно нормализовал адреса сторонних реестров, работающих по протоколу разреженного индекса. При определённом сочетании условий атакующий мог перехватить токен жертвы.
Cargo неправильно обрабатывал символические ссылки внутри тарболов крейтов, загруженных со сторонних реестров. Специально сконструированный пакет мог извлечь файлы на уровень выше собственного каталога кеша, а из-за устройства кеша это позволяло перезаписать кеш другого крейта того же реестра.
В функции соединения срезов исправлено переполнение буфера. Ошибка проявлялась, когда один из срезов приходил из реализации, нарушающей правила заимствования.
Команда реагирования на проблемы безопасности Rust сообщила об уязвимости CVE-2026-33056 в стороннем крейте tar, который Cargo использует для распаковки пакетов при сборке. Зловредный крейт при распаковке мог менять права доступа на произвольные каталоги файловой системы.
В реализации слива части вектора устранено обращение к памяти, которая не была инициализирована. Это неопределённое поведение, то есть программа читает то, чего там нет.
Команда crates.io изменила правило: больше не будет публиковаться пост в блоге на каждый обнаруженный или полученный по сообщению вредоносный крейт. Вместо этого всегда будет выходить сообщение о безопасности в базе RustSec.
В crates.io появился режим, в котором публикация крейта по токену невозможна в принципе — только через доверенную публикацию. Заодно заблокированы два триггера GitHub Actions, стоявшие за несколькими инцидентами в экосистеме.
Команда crates.io удалила два вредоносных крейта: finch-rust, маскировавшийся под существующую библиотеку finch, и sha-rust, на который тот зависел. Полезная нагрузка находилась не в коде верхнего уровня, а в транзитивной зависимости.
Команда crates.io удалила два вредоносных крейта — evm-units и uniswap-utils. Оба скачивали полезную нагрузку, по всей видимости предназначенную для кражи криптовалют.