Teknologi

Ubuntu 26.04 gjør Rust sudo til standard og avslutter 46 år med C-sårbarheter

Adrian Kessler

Ubuntu 26.04 LTS gjør sudo-rs til standardimplementering av verktøyet som styrer systemtilgang på Linux. Når en bruker eller prosess trenger forhøyede rettigheter – for å installere programvare, endre systemfiler, kjøre en tjeneste som root – er sudo portvakten. Den opprinnelige versjonen var skrevet i C. sudo-rs er en fullstendig gjenimplementering i Rust, og er nå versjonen som følger med som standard på verdens mest brukte Linux-distribusjon.

Den opprinnelige sudo ble skrevet for flere tiår siden. I løpet av den tiden har C-kodebasen akkumulert noe annet ved siden av funksjonene: en klasse av minnehåndteringssårbarheter som Rust eliminerer på kompilatornivå. Den mest betydningsfulle var CVE-2021-3156, kalt Baron Samedit. Sårbarheten lå uoppdaget i omtrent ti år og muliggjorde lokal rettighetseskalering på alle store Linux-distribusjoner. En lokal angriper med en ikke-root-skallkonto kunne bli root. Canonical lappet den innen 24 timer etter avsløring. Den arkitektoniske tilstanden som tillot den – C’s manuelle minnehåndtering – ble ikke lappet.

Det Rust endrer er ikke hvordan koden skrives, men hvilken klasse av feil som kan eksistere i den. Bufferoverløp, use-after-free-feil og nullpointer-dereferanser er en kategori sårbarheter som Rust eliminerer ved kompilering – kompilatoren avviser kode med disse mønstrene før den kan kjøres. For et program som håndterer rettighetseskalering, er det en betydelig begrensning å fjerne fra trusselmodellen.

sudo-rs fullførte en uavhengig sikkerhetsrevisjon i 2023. Prosjektet oppnådde ytelsesparitet med C-implementeringen. Canonical begynte å tilby det som et valg i tidligere Ubuntu-versjoner før de gjorde det til standard i 26.04. Den stegvise tilnærmingen gjenspeiler forsiktigheten som er påkrevd når man erstatter et verktøy som, hvis det svikter, enten kan låse brukere ute av systemtilgang eller eskalere angripere til root.

Ubuntu 26.04 leveres også med uutils coreutils – Rust-omskrivinger av grunnleggende verktøy som ls, cat og mv. Men cp, mv og rm forblir på GNU C-implementeringene for denne utgivelsen. Canonicals begrunnelse: TOCTOU-raceforhold i disse Rust-implementeringene medfører risiko for datatap som teamet vurderte som for høy for en LTS-utgivelse. Den stegvise utrullingen avslører noe ærlig om «bare skriv det om i Rust»-tilnærmingen: verktøyet finnes, men migreringen krever enkelttilfelle-sikkerhetsanalyse, ikke en blanket bytte.

Linux-kjernen begynte å godta Rust-driverkode i 2022. Android-teamet har brukt Rust for ny systemkode siden 2021. Microsoft har omskrevet minnesensitive Windows-komponenter i Rust. At Ubuntu gjør sudo-rs til standard er en meningsfull milepæl fordi det ikke er et eksperiment i en ny driver eller en valgfri komponent – det er autentiseringslaget for systemtilgang, levert som standard til hver nye Ubuntu-installasjon.

CVE-mønsteret som produserte Baron Samedit avsluttes for Ubuntu-brukere under denne konfigurasjonen. Om andre store distribusjoner – Debian, Red Hat, Fedora, Arch – følger Ubuntu-veien til standard sudo-rs er spørsmålet som avgjør omfanget av endringen. sudo-rs er tilgjengelig for dem alle. Canonical besluttet at revisjonsresultatene var tilstrekkelige. Den neste beslutningen tilhører de andre vedlikeholderne.

Tagger: , , , , ,

Diskusjon

Det er 0 kommentarer.