В разрабатываемой Ubuntu 26.10 «Stonking Stingray» завершён переход базовых утилит с GNU Coreutils на написанную на Rust и распространяемую по лицензии MIT реализацию uutils/coreutils. В актуальных release notes Ubuntu 26.10 изменение обозначено как «100% Rust coreutils»: последние остававшиеся GNU-версии cp, mv и rm заменены реализациями uutils 17 августа 2026 года, когда в репозиторий Ubuntu вернули Rust-реализацию cp.
Процесс замены начался 12 марта 2025 года, когда Canonical представила план «Carefully But Purposefully Oxidising Ubuntu». Главной причиной называлось повышение безопасности базовых компонентов: Rust позволяет на этапе компиляции исключать целые классы ошибок управления памятью, характерных для C и C++. При этом Canonical подчёркивала зрелость существующих реализаций — GNU Coreutils не объявлялись устаревшими или небезопасными, речь шла о долгосрочной модернизации Ubuntu.
В процессе перехода возникли проблемы не только с не поддерживаемыми параметрами команд, но и c различиями кодов возврата, сообщений об ошибках, работы с правами, символическими ссылками и поведением в пограничных случаях. После внутренней проверки Canonical заказала независимый аудит uutils у Zellic. Как сообщила компания 22 апреля, аудит выявил 113 проблем и привел к публикации 44 уязвимостей CVE.
Наличие memory safety не спасло новую реализацию от логических ошибок. Например, CVE-2026-35338 позволяла обойти защиту chmod --preserve-root из-за неправильной обработки некоторых путей и символических ссылок. Самыми проблемными оказались cp, mv и rm: на 22 апреля 2026 года для них оставались не исправленными 8 критических ошибок, поэтому Canonical сохранила GNU-версии этих команд в Ubuntu 26.04 LTS и перенесла завершение миграции на 26.10.
В процессе исправлялись и многочисленные несовместимости: изменение владельца файла при mv между файловыми системами, проблемы с df и date, отличия поведения cp и другие регрессии. Иногда достаточно было даже другого текста сообщения об ошибке, чтобы сломать существующий тест — одна такая несовместимость cp была зарегистрирована летом.
Показательна история другого участника программы — sudo-rs. 31 августа 2026 года разработчики сообщили о TOCTOU-уязвимости в sudoedit с оценкой CVSS 6.4: при определённой конфигурации гонка позволяла записать файл в другой каталог и потенциально повысить привилегии. 1 сентября Canonical выпустила USN-8708-1 с исправлением. Этот случай хорошо показывает, что Rust защищает от многих ошибок работы с памятью, но не способен автоматически предотвратить логические ошибки.
Работа над uutils продолжается. В выпущенной 17 сентября версии coreutils 0.12.0 разработчики заявили об устранении всех проблем, которым Ubuntu присвоила приоритет, и добавили дополнительные защиты cp, mv и rm.
Переход занял более полутора лет и потребовал независимого аудита, исправления десятков уязвимостей и многочисленных проблем совместимости. Ubuntu 26.10 станет первым выпуском, где стандартный набор Coreutils полностью предоставляется uutils, одновременно демонстрируя и преимущества Rust, и то, что безопасность языка не заменяет зрелость реализации и длительное тестирование.
>>> Источник





















