Technologia

Ubuntu 26.04 wdraża Rust sudo jako domyślne i kończy 46 lat podatności C

Adrian Kessler

Ubuntu 26.04 LTS, wydane w kwietniu 2026 roku, ustawia sudo-rs jako domyślną implementację narzędzia kontrolującego dostęp na poziomie systemu w Linuksie. Gdy użytkownik lub proces potrzebuje podwyższonych uprawnień — by zainstalować oprogramowanie, zmodyfikować pliki systemowe, uruchomić usługę jako root — sudo jest strażnikiem. Oryginał został napisany w C. sudo-rs to całkowita przepisana wersja w Rucie i teraz jest to wersja dostarczana domyślnie na najczęściej używanej dystrybucji Linuksa na świecie.

Oryginalne sudo powstało w 1980 roku. Przez ten czas kod w C obrósł w coś więcej niż tylko funkcje: klasę podatności związaną z zarządzaniem pamięcią, które Rust eliminuje na poziomie kompilatora. Najpoważniejszą z nich było CVE-2021-3156, nazwane Baron Samedit. Podatność pozostawała niewykryta przez około dziesięć lat, umożliwiając lokalną eskalację uprawnień na każdej głównej dystrybucji Linuksa. Lokalny atakujący z nieuprzywilejowanym kontem powłoki mógł stać się rootem. Canonical załatał ją w ciągu 24 godzin od ujawnienia. Warunek architektoniczny, który na to pozwolił — ręczne zarządzanie pamięcią w C — nie został załatany.

To, co zmienia Rust, nie polega na tym, jak kod jest pisany, ale na tym, jaka klasa błędów może w nim istnieć. Przepełnienia bufora, błędy use-after-free i dereferencje pustych wskaźników to kategoria podatności, które Rust eliminuje w czasie kompilacji — kompilator odrzuca kod z tymi wzorcami, zanim zdąży się uruchomić. W przypadku oprogramowania obsługującego eskalację uprawnień jest to znaczące ograniczenie usunięte z modelu zagrożeń.

sudo-rs przeszło pełny, niezależny audyt bezpieczeństwa w 2023 roku. Projekt osiągnął parytet wydajności z implementacją w C. Canonical zaczął dostarczać je jako opcję we wcześniejszych wersjach Ubuntu, zanim uczynił je domyślnym w 26.04. Stopniowe podejście odzwierciedla ostrożność właściwą dla zastępowania narzędzia, które w przypadku awarii może albo zablokować użytkownikom dostęp do systemu, albo wynieść atakujących do rangi roota.

Ubuntu 26.04 dostarcza również uutils coreutils — przepisane w Rucie podstawowe narzędzia, w tym ls, cat i mv. Ale cp, mv i rm pozostają na implementacjach GNU w C w tym wydaniu. Uzasadnienie Canonical: wyścigi TOCTOU w tych implementacjach w Rucie niosą ryzyko zniszczenia danych, które zespół uznał za zbyt wysokie jak na wydanie LTS. Stopniowe wdrażanie ujawnia coś uczciwego w podejściu „po prostu przepiszmy to w Rucie”: narzędzia istnieją, ale migracja wymaga analizy bezpieczeństwa przypadku po przypadku, a nie masowego przełącznika.

Jądro Linuksa zaczęło akceptować kod sterowników w Rucie w 2022 roku. Zespół Androida używa Rusta dla nowego kodu systemowego od 2021 roku. Microsoft przepisał wrażliwe na pamięć komponenty Windows w Rucie. To, że Ubuntu ustawia sudo-rs jako domyślne, jest znaczącym kamieniem milowym, ponieważ nie jest to eksperyment z nowym sterownikiem ani opcjonalnym komponentem — to warstwa uwierzytelniania dostępu do systemu, dostarczana domyślnie na każdej nowej instalacji Ubuntu.

Wzór CVE, który wyprodukował Baron Samedit, kończy się dla użytkowników Ubuntu w tej konfiguracji. To, czy inne główne dystrybucje — Debian, Red Hat, Fedora, Arch — pójdą w ślady Ubuntu i ustawią domyślnie sudo-rs, jest pytaniem, które określa skalę zmiany. sudo-rs jest dostępne dla wszystkich z nich. Canonical uznał, że wyniki audytu są wystarczające. Następna decyzja należy do innych opiekunów.

Tagi: , , , , ,

Dyskusja

Jest 0 komentarzy.