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)
Ответ на: комментарий от zabbal

попрошу ИИ-агента его собрать

ни кто вам не запрещает. не ставьте, только, палки в колеса (*) разработке/поддержке отлаженных тулзятин!
(гусарам молчать)

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

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

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

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

coreutils
поддерживать и развивать код
изменение такой простой утилиты как pwd приводит к порче памяти

Я Вас умоляю... Там уже никакие изменения (кроме переписывания на другой ЯП) не приведут к порче памяти.

Вот то, для чего раст делали - поддержка и развитие невменяемого многоуровневого г...а под названием CSS - отлично было оптимизировано переписыванием на раст и позволило конкурировать (хотя бы по качеству) ограниченными ресурсами с легионом разработчиков за много денег.

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

Разработчиков coreutils я тут не вижу.

А как называть человека, занимающегося разработкой coreutils и чьи патчи регулярно попадают в релизы?

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

Там уже никакие изменения (кроме переписывания на другой ЯП) не приведут к порче памяти.

Так привели же, в начале года несколько релизов coreutils были с этой проблемой.

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

Аргументы уровня «заменить молоток, топор и нож, потому что они травмоопасны». Конечно можно ими травмироваться, особенно если не включать мозги при их использовании. Но это же не значит что эти инструменты плохи.

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

Ха-ха. Не знаю, как сейчас, а в своё время Ubuntu Server был самым распространённым дистрибутивом в мире для облачного развёртывания всякой всячины. Такое вот голосование ногами.

Впрочем, я давно уже к линуксовым дистрибутивам отношения не имею, могло всё поменяться.

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

её посчитали слишком длинной

«Абсолютно невозможное графоманство, вода и канцелярит, проще заново написать, чем править это»

Интересный, конечно, вариант дислексии…

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

Не, ну так и я могу. А этапы, сроки, неопровержимые доказательства?

Согласен, это сложнее, здесь помощник нужен.

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

Конечно можно ими травмироваться, особенно если не включать мозги при их использовании. Но это же не значит что эти инструменты плохи.

Конечно, можно легко намотаться на станок, если не включать мозги. Конечно, можно легко сжечь квартиру, забыв включенный утюг, если не включать мозги. Конечно, можно легко получить смертельный удар током в мокром помещении, если не включать мозги. Конечно, можно легко задохнуться бытовым газом, если не включать мозги. Но зачем-то люди изобрели щитки и датчики, выключающие станок, если лезешь в него на ходу, автоматы, вырубающие утюги при долгом неиспользовании, устройства защитного отключения, добавление меркаптана. Странные люди аргументировали, что нужно ограничить рабочую зону станка, выключать утюг, детектировать превышение порога дифференциального тока, дать возможность чувствовать носом утечку газа. Плохо ли они придумали? Может, пользователям всех этих вещей нужно просто мозги включать?

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

Молодой человек, скажите только одно - вы, rust’оманы, все поголовно такие, или все же есть вменяемые? На последнее я искренне очень надеюсь.

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

Ну хорошо, мне такие люди не известны. Если знаешь, позови - вместе зададим вопрос.

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

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

Да принято так, на каком языке ядро, на том и системные утилиты.

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

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

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

Для C есть свои механизмы обеспечения безопасности кода, например:

  • динамические анализаторы кода (valgrind);
  • санитайзеры gcc и clang;
  • статические анализаторы кода, как опенсорсные (cppcheck), так и проприетарные (Coverity или тот же скандально известный на ЛОРе пивас-студио);
  • элементарная программистская культура (для кого-то выглядит смешно, но на самом деле от прокладки между стулом и клавиатурой зависит многое).

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

И чтобы два раза не вставать – повесить ярлык и записать меня в какие-то там «хейтеры» у тебя не получится, я к Расту отношусь в целом нейтрально. А когда на нём какой-то новый полезный проект пишут, готов порадоваться (RustDesk, например). Но вот когда начинают переписывать то, что уже есть и работает, параллельно без особого шума меняя лицензию – это совсем другая история.

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

Но зачем-то люди изобрели…

Если что, я в соседнем комментарии перечислил аналоги всего этого для программирования на C. Более того, я уверен, что ты и сам про это всё (или почти всё) знаешь.

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

Никакие анализаторы кода не могут заметить математически доказанную безопасную модель работы с памятью и параллельным исполнением.

Также как никакое конечное количество примеров и численное моделирование не может заменить строгое доказательство.

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

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

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

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

Вот только цена такого кода может быть намного выше.

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

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

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

В бизнесе обычно вопрос не ставится в терминах «завышена»-«занижена». Есть бюджет, сроки, и зависимости. Строится матрица рисков. Считается вероятность выполнения проекта одним методом против другого. Бизнес исходит из того, что есть, а не из того, как надо. «Как надо» изучает философия.

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

А что не так с оригинальной лицензией? И почему новая лучше?

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

Не совсем «бабло рулит». Мы получаем выполнение проекта в рамках бюджета, в срок, с наименьшими рисками, и дешевле. Что, собственно, и хотелось.

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

я уточню - в условия (всех этих) как раз таки и отсутствует сам человек, как таковой...

с наименьшими рисками, и дешевле

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

Не совсем «бабло рулит»

это было сказано в рамках нашей беседы... то, самое :о) именно бабло
все имхо, закончим?

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

Есть один очень важный момент. Обычно конечный исполнитель проекта не вовлечён в планирование, или вовлечён опосредованно. Например в ресурсы на уровне «я чё, один это буду делать», в сроки «надо завтра к обеду», ну иногда в зависимости «и как я буду Васину функцию использовать, он обещал только на следующей неделе». В реальности планирование и исполнение проекта играет не менее (обычно намного более) важную роль для успешной работы предприятия. А инвесторам вашего предприятия вообще до фени, на Си вы будете писать или на Раст. Они и слов то таких не знают.

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

отлаженных тулзятин

Ну вот их в сторонку и отложили - пускай там лежат, плесенью покрываются.

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

санитайзеры, статические анализаторы кода, динамические анализаторы кода

нежелание заниматься бесполезной работой

Ну вот как раз из-за нежелания заниматься бесполезной работой с внешними тулзами в попытках сделать из сишного убожества что-то отдалённо похожее на безопасный язык проект и переписали. Причём убунта это только первая ласточка - остальные мейнстримные дистры наверняка подтянутся следом: тем более что баги уже выловили.

И если GNU не вытащит голову из задницы, то доля GPL будет падать с ускорением, под унылый пердёж хейтеров про теории заговора. Лень и отсутствие желания (или способностей) думать мозгом страшнее любых теорий заговора.

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

Для C есть свои механизмы обеспечения безопасности кода,

Жалко, что сишники ими не пользуются, конечно. Интересно, кстати, почему?

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

да ктож спорит! просто это еще одно небольшое уточнение по ситуации!

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

аналоги всего этого для программирования на C

Ну да. Но есть ещё более лучшие аналоги, предоставляемые другими языками программирования. Которые большую часть работы ещё в компайлтайме сделают.

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

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

Вот именно. Человек не робот, чтобы держать весь проект в уме и всегда иметь полную концентрацию. Он устаёт, ошибается, забывает. Чем меньше у него будет возможность ошибиться, чем больше автоматических проверок поймают его ошибки, тем лучше.

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

ну да, МЫ отложи, а ВЫ будете все портить?! ну уж нафиг, МЫ тоже будем!

Единственное что ты можешь отложить нефизиологичного это коммент на ЛОРе. Разработка что GNU, что убунты идёт своим чередом безотносительно твоих потуг.

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

Человек не робот, чтобы держать весь проект в уме и всегда иметь полную концентрацию. Он устаёт, ошибается, забывает. Чем меньше у него будет возможность ошибиться, чем больше автоматических проверок поймают его ошибки, тем лучше.

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

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

Увязочка. Контроль не есть исполнение. Постановка задачи не есть исполнение. Проверка результатов не есть исполнение.

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

из-за нежелания заниматься бесполезной работой с внешними тулзами

… потратили пару лет на переписывание давно отлаженных утилит на Раст? Странное понимание бесполезности.

тем более что баги уже выловили.

Это не гарантирует, что выловили все баги. И обеспечили совместимость со всеми теми скриптами, в которых используются заменённые утилиты, что понаписали конечные пользователи за последние 30 лет.

Если бы переписали какой проект, где никак не могут побороть утечки памяти и сегфолты на ровном месте… А переписывать с ошибками утилиты, которым больше лет, чем Линуксу…

P.S. Хотите безопасности – пишите на Аде. Хотите доказательного программирования – пишите на Хаскеле или «Едином Лиспе».

mister_VA ★★★
()

Там сказали почему именно MIT, а не ISC или BSD?

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

Никакое численное моделирование не пригодно для анализа аналоговых процессов реального мира по причине неизбежности методической погрешности … не туда ты тянешь, дуд.

Стековая машина оперирует адресами, уходя от этого уровня контроля ты становишься петрушкой с чьим-то пальцем в анусе … а то и с рукой по локоть.

В инжиниринге заповеди выстраданы и написаны кровавыми слезами : сложное - упрощать, простое - не усложнять, не нужно чинить то, что не сломано и т.д.

Развелось балаболов …

ganz
()

с 20.04 все еще нет смысла обновляться

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

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

Гос.контракты, военка, соображения национальной безопасности - деньги, деньги, деньги - все же понятно.

Rust & Memory Safety: What NSA, CISA & White House Say (2026) https://rustify.rs/articles/rust-memory-safety-nsa-cisa-2026 .

Эта акция с раздачей призов из бюджета идёт уже несколько лет. Или вы думали, что растопомешательство само собой возникает при виде слова Rust? Нет, оно появляется при виде денег.

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