Технологии

Ubuntu 26.04 делает Rust sudo стандартным и завершает 46-летнюю эпоху C-уязвимостей

Adrian Kessler

Ubuntu 26.04 LTS, выпущенный в апреле 2026 года, делает sudo-rs реализацией по умолчанию для инструмента, управляющего доступом на уровне системы в Linux. Когда пользователю или процессу требуются повышенные привилегии — установка ПО, изменение системных файлов, запуск службы от root — sudo выступает в роли шлюза. Оригинальная версия была написана на C. sudo-rs — это полная переработка на Rust, и теперь именно она поставляется по умолчанию в самом популярном дистрибутиве Linux в мире.

Оригинальный sudo был написан в 1980 году. За это время кодовая база на C накопила не только новые функции, но и целый класс уязвимостей, связанных с управлением памятью, которые Rust устраняет на уровне компилятора. Самой значимой была CVE-2021-3156, получившая имя Baron Samedit. Эта уязвимость оставалась незамеченной около десяти лет, позволяя локально повышать привилегии в каждом крупном дистрибутиве Linux. Злоумышленник с непривилегированной учётной записью мог получить root-доступ. Canonical исправила её в течение 24 часов после раскрытия. Но архитектурная причина, сделавшая её возможной — ручное управление памятью в C — не была устранена.

Что меняет Rust — это не то, как пишется код, а то, какие классы ошибок могут в нём существовать. Переполнения буфера, ошибки use-after-free и разыменования нулевых указателей — это категория уязвимостей, которые Rust исключает на этапе компиляции: компилятор отвергает код с такими паттернами до того, как он сможет выполниться. Для программы, отвечающей за повышение привилегий, это серьёзное снятие ограничений с модели угроз.

sudo-rs прошёл полный независимый аудит безопасности в 2023 году. Проект достиг паритета производительности с реализацией на C. Canonical начала поставлять его как опцию в более ранних версиях Ubuntu, прежде чем сделать версией по умолчанию в 26.04. Поэтапный подход отражает осторожность, уместную при замене инструмента, отказ которого может либо заблокировать пользователям доступ к системе, либо дать злоумышленникам root-права.

Ubuntu 26.04 также поставляет uutils coreutils — переписанные на Rust базовые утилиты, включая ls, cat и mv. Но cp, mv и rm остаются на реализациях GNU на C в этом релизе. Обоснование Canonical: состояния гонки TOCTOU в этих реализациях на Rust несут риск потери данных, который команда сочла слишком высоким для LTS-релиза. Поэтапное внедрение честно показывает кое-что о подходе «просто перепиши это на Rust»: инструментарий существует, но миграция требует анализа безопасности для каждого случая, а не массового переключения.

Ядро Linux начало принимать драйверы на Rust в 2022 году. Команда Android использует Rust для нового системного кода с 2021 года. Microsoft переписывает чувствительные к памяти компоненты Windows на Rust. Решение Ubuntu сделать sudo-rs версией по умолчанию — значимая веха, потому что это не эксперимент с новым драйвером или опциональным компонентом: это слой аутентификации для доступа к системе, который по умолчанию устанавливается на каждую новую копию Ubuntu.

Шаблон CVE, породивший Baron Samedit, заканчивается для пользователей Ubuntu в этой конфигурации. Последуют ли другие крупные дистрибутивы — Debian, Red Hat, Fedora, Arch — за Ubuntu в переходе на sudo-rs по умолчанию — вот вопрос, определяющий масштаб перемен. sudo-rs доступен для всех них. Canonical решила, что результатов аудита достаточно. Следующее слово — за остальными мейнтейнерами.

Теги: , , , , ,

Обсуждение

Имеется 0 комментариев.