LINUX.ORG.RU

Ubuntu 26.10 полностью переводит Coreutils на Rust и лицензию MIT после аудита и исправления десятков проблем

 , ,


0

4

В разрабатываемой 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, и то, что безопасность языка не заменяет зрелость реализации и длительное тестирование.

Исходные коды проекта

>>> Источник

★★★★★

Проверено: cetjs2 ()
Последнее исправление: cetjs2 (всего исправлений: 5)

Показательно, что в источнике новости про лицензию проекта ни гу-гу. Чтобы про неё узнать, надо сходить на гитхаб.

Всё это наводит на параноидальные мысли о том, что дело было совсем не в Расте. Раст неуиновен.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)

«Оставшиеся нерешёнными проблемы были канонизированы (причислены к лику фич) — Canonical»

Smacker ★★★★★
()

отличный отчет что раст не есть универсальная пробка от проблем в отверстии…
дураку и на ровном месте смогёт…

pfg ★★★★★
()

Это та же Canonical, которая недавно отозвала релизный образ дистрибутива, или какая-то другая? :)

wandrien ★★★★
()

других проблем и идей у них нет

Bad_ptr ★★★★★
()

Наличие memory safety не спасло новую реализацию от логических ошибок

Внезапно

dynamic_cast ★
()

Переход оказался значительно сложнее простой замены исполняемых файлов

Они добились полной обратной совмести? Или надежда, что все подстроятся под их воображаемый мейстрим?

dmitry237 ★★★★★
()
Ответ на: комментарий от dmitry237

нет пока не добились, несколько тестов пока не пройдены, это было в первой версии новости, её посчитали слишком длинной

unclestephen ★★★★★
() автор топика

В серьезном проде даже первые релизы LTS не рассматриваются для перехода на них. Ждут патч-версии 3. А это даже не LTS.

seiken ★★★★★
()

Чтобы снова найти регрессию и откатить?

mittorn ★★★★★
()
Ответ на: комментарий от firkax

А со стабильностью и всем таким прочим примерно как у дебиана, за исключением снапа, это ненужное переусложнение, но не критично…

cetjs2 ★★★★★
()
Ответ на: комментарий от cetjs2

какая-же это стабильность? ее вон из стороны в сторону мотает...
собственно, как и большинство дистров...
а так, да - стабильная такая, штормовая новость. (печально все это и... весь этот катаклизм, который мы тут наблюдаем)

sunjob ★★★★★
()
Последнее исправление: sunjob (всего исправлений: 1)
Ответ на: комментарий от hobbit

дело было совсем не в Расте

Именно в нём. Кто мешает проекту GNU переехать на более безопасный язык с сохранением лицензии?

zabbal ★★★☆☆
()
Ответ на: комментарий от hobbit

Когда GNU ещё не было, уже существовали bsd утилиты. Если бы ubuntu именно лицензия интересовала, могли бы их взять.

Но вообще, не понятно, нафига для coreutils раст.

Shadow ★★★★★
()
Последнее исправление: Shadow (всего исправлений: 1)
Ответ на: комментарий от Shadow

Возможно космонавт вообще не имел в виду лицензию. Ему проехали по ушам что вот нужно на новый, безопасный язык скорее переходить. Люди управляемы, манипулировать людьми не так сложно. Двухходовочка? Не нужно никакой теории заговора. Думаешь мало людей искренне ненавидящих эту раковую лицензию, воплощение адского коммунизма на земле и порождённую самим сатаной?

sin_a ★★★★★
()

УРАААААА!!!!!

yvv1 ★★
()
Ответ на: комментарий от Shadow

нафига для coreutils раст

Для того, что бы иметь возможность поддерживать и развивать код. А не так, что после трёх десятилетий разработки, тестирования и использования, изменение такой простой утилиты как pwd приводит к порче памяти.

unC0Rr ★★★★★
()
Ответ на: комментарий от cetjs2

но зрелости.

а может быть человеческий фактор, подковерная борьба по перетягиванию каната...
нам остается только догадываться, много помнить и делать предположения, «что там» на самом деле происходит... имхо :о)

sunjob ★★★★★
()
Ответ на: комментарий от Shadow

Но вообще, не понятно, нафига для coreutils раст.

Мне, откровенно говоря, вообще непонятна эта мода с переписыванием.

Новые проекты - это можно понять. Но переписывать то, что и так хорошо работало - непонятно.

DrRulez ★★★★★
()
Ответ на: комментарий от hobbit

да, но там немного о другом (или я туплю)

mremap system call in Linux 2.2 to 2.2.25, 2.4 to 2.4.24, 2.6 to 2.6.2

имеет отношение к pwd?
спс..

sunjob ★★★★★
()
Последнее исправление: sunjob (всего исправлений: 1)
Ответ на: комментарий от zabbal

Кто мешает проекту GNU переехать

так переезжать надо с чувством, с толком, с расстановкой...
(можно, конечно, вдариться в дебаты как «это»? но, надеюсь, мы и так поймем, что было недосказано?! :о)

sunjob ★★★★★
()
Ответ на: комментарий от sunjob

Да, ерунду написал, каюсь.

Бага с переполнением буфера в pwd гораздо свежее и описана здесь.

hobbit ★★★★★
()
Ответ на: комментарий от bbc69

Спроси, зачем им это потребовалось, у разработчиков coreutils, которые полезли в неё и закономерно поломали. Потому что работающую и отлаженную программу на Си нельзя патчить. От этого она сразу становится неотлаженной и непротестированной. Даже если ты одну строчку поменял, нужно тестировать с нуля всё сверху донизу.

unC0Rr ★★★★★
()
Ответ на: комментарий от LongLiveUbuntu

Я в уговорах космонавта участия не принимал, ЕВПОЧЯ.

sin_a ★★★★★
()
Ответ на: комментарий от unC0Rr

работающую и отлаженную программу на Си нельзя патчить. От этого она сразу становится неотлаженной и непротестированной.

Это справедливо для любого языка программирования, а не только для Си.

Zero_Cool
()
Ответ на: комментарий от LongLiveUbuntu

Кхм, он не про себя писал, если что. А люди, называющие GPL «фашистской», есть даже на ЛОРе, правда, они большей частью предпочитают писать из-под анонимуса.

hobbit ★★★★★
()
Ответ на: комментарий от Zero_Cool

Это справедливо для любого языка программирования, а не только для Си.

Для разных языков в значительно разной степени. В Си - максимально. Ты не можешь вставить в функцию a() вызов функции b() и быть уверенным, что не добавил UB, не просмотрев практически весь остальной код программы. Захотел поменять тип переменной? Удачи отслеживать, везде ли она передаётся в правильные функции, и правильные ли элементы форматирования к ней применяются в printf. В расте же ты UB таким образом не добавишь, компилятор проверит. В хаскеле ты тоже можешь быть уверенным, что вызов b не будет фатальным. В каком-нибудь идрисе ты сам докажешь компилятору, что багов нет.

unC0Rr ★★★★★
()
Ответ на: комментарий от unC0Rr

Разработчиков coreutils я тут не вижу. Из кода тоже не понял, зачем prefer xpalloc to xnrealloc.

Подтекст вопроса понятен, надеюсь. Вот есть программа. Простая. Завершённая. И зачем её вообще трогать?

bbc69
()
Ответ на: комментарий от bbc69

И зачем её вообще трогать?

а как-же «старые добрые семь грехов»? (в частности, гордынька, тщеславие и зависть?!)

sunjob ★★★★★
()
Ответ на: комментарий от sunjob

переезжать надо с чувством, с толком, с расстановкой…

Примерно как GNU Mach пилится, ага. Как раз к пенсии рабочий релиз увижу, и то если попрошу ИИ-агента его собрать ;)

zabbal ★★★☆☆
()
Ответ на: комментарий от kirill_rrr

Ждём второго акта балета.

Ну наконец-то ты догадался не использовать сложные прилагательные, которых не понимаешь :-D

zabbal ★★★☆☆
()
Ответ на: комментарий от firkax

Для крупного бизнеса всё сводится к тому, что поддерживается в облаке, которое используется. Если там нет дебиана, а есть убунту, потому что для неё более надёжная поддержка, то будет убунту.

seiken ★★★★★
()

Занимайте места согласно купленным билетам.

У каноникала явно есть какой-то хитрый и подробный план, и мы, возможно, разгадаем его даже раньше, чем он пойдет по ЖПП натоптанной дорожкой.

thesis ★★★★★
()
Последнее исправление: thesis (всего исправлений: 1)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.