Canonical раскрыла 44 уязвимости в uutils на Rust: почему borrow checker и clippy пропустили баги
В апреле 2026 года Canonical раскрыла 44 CVE в uutils — реализации GNU coreutils на языке Rust, которая поставляется по умолчанию с Ubuntu 25.10. Значительная часть уязвимостей была обнаружена в ходе внешнего аудита, проведённого перед релизом 26.04 LTS. Подавляющее большинство этих багов не попало ни в один из встроенных инструментов статической проверки Rust — ни в borrow checker, ни в clippy lints, ни в cargo audit.
Автор разбора изучил полный список обнаруженных уязвимостей и пришёл к выводу, что все они были допущены опытными разработчиками, хорошо знающими Rust. Это ставит важный вопрос о границах применимости инструментов, которые позиционируются как гарантия безопасности memory safety. Классические уязвимости — переполнение буфера, некорректная работа с памятью, ошибки логики обработки данных — остаются возможными даже в кодовой базе, формально соответствующей правилам языка.
При этом автор подчёркивает, что публикация результатов аудита — шаг в правильном направлении. Вице-президент по разработке Ubuntu Джон Сигер ранее выступал на подкасте Rust in Production, где откровенно обсуждал текущее состояние Rust в Canonical. Открытость компании позволяет всему сообществу извлекать уроки из обнаруженных проблем, а не повторять их в собственных проектах. Для инженеров, пишущих системный код на Rust, разбор этих CVE представляет практическую ценность как демонстрация реальных паттернов ошибок, которые не детектируются компилятором.