Разработчики проекта sudo-rs выпустили обновление версии 0.2.10, содержащее исправления для двух уязвимостей в реализации утилит sudo и su на языке Rust. Особую актуальность этот выпуск приобретает в свете планов по включению sudo-rs в дистрибутив Ubuntu 25.10 вместо традиционной утилиты sudo. При этом важно отметить, что кодовая база проекта успешно прошла два независимых аудита безопасности - от NLnet в августе 2023 года и от NGICore в августе 2025 года.
Детали уязвимостей
Первая из обнаруженных уязвимостей CVE-2025-64517 классифицирована как средняя с оценкой 4.4 из 10. Она позволяет привилегированному пользователю, имеющему права выполнения команд через sudo от имени других пользователей, запускать команды под учётной записью, пароль которой ему неизвестен. Однако для эксплуатации необходимо соблюдение нескольких условий. Во-первых, атакующий должен знать пароль хотя бы одного пользователя, для которого ему разрешено выполнение команд в настройках sudo. Во-вторых, уязвимость проявляется только при активации в конфигурации sudoers флагов rootpw и targetpw, которые по умолчанию отключены.
Суть проблемы заключается в том, что при включении этих флагов поведение sudo должно изменяться, требуя ввод пароля целевого пользователя вместо пароля текущего пользователя. Однако из-за ошибки в реализации это требование игнорировалось, и привилегированный пользователь мог продолжать использовать собственный пароль для выполнения команд с правами root. Причиной послужила некорректная работа с timestamp-файлами, используемыми для кэширования учётных данных. При активированных флагах targetpw или rootpw в timestamp-файл записывался UID запускающего sudo пользователя вместо UID аутентифицированного пользователя.
Вторая уязвимость CVE-2025-64170 получила низкий уровень опасности - 3.8 из 10. Она связана с отображением не полностью введённого пароля в стандартном входном потоке при наступлении таймаута ввода. Проблема проявляется только в конфигурациях без включённой настройки pwfeedback, которая по умолчанию отключена. Если пользователь начинает ввод пароля, но не завершает его нажатием Enter до истечения таймаута (по умолчанию 5 минут), введённые символы отображаются в командной строке. Отметим, что поддержка таймаута на ввод пароля была добавлена в версии sudo-rs 0.2.7, выпущенной в июле 2025 года.
Обе уязвимости были оперативно устранены в выпуске 0.2.10. Разработчики подчёркивают, что для большинства пользователей риски минимальны, поскольку эксплуатация первой уязвимости требует нетривиальной конфигурации sudoers. Тем не менее, администраторам систем, особенно тех, где планируется переход на sudo-rs, рекомендуется установить обновление как можно скорее.
Интересно, что несмотря на обнаруженные проблемы, история аудитов безопасности проекта демонстрирует его зрелость. Два независимых проверки кодовой базы, проведённые с интервалом в два года, подтвердили общие качество реализации. Это особенно важно в контексте постепенного перехода major дистрибутивов на альтернативы традиционным утилитам, написанным на memory-safe языках.
Эксперты отмечают, что переход на Rust-реализации системных утилит является частью тренда в индустрии информационной безопасности. Языки программирования с гарантиями memory safety позволяют предотвращать целые классы уязвимостей, связанных с управлением памятью. Однако, как показывает данный случай, даже в таких реализациях остаются место для логических ошибок и проблем с реализацией сложных механизмов аутентификации.
В настоящее время разработчики sudo-rs работают над улучшением тестового покрытия edge cases, связанных с различными конфигурациями sudoers. Параллельно ведётся работа над документацией, где будут подробно разъяснены последствия включения различных флагов безопасности. Пользователям, которые уже используют sudo-rs в продуктовых средах, рекомендуется пересмотреть свои конфигурации на предмет нестандартных настроек аутентификации.