Teknik

Ubuntu 26.04 gör Rust sudo till standard och avslutar 46 år av C-sårbarheter

Adrian Kessler

Ubuntu 26.04 LTS gör sudo-rs till standardimplementering av verktyget som styr systembehörigheter på Linux. När en användare eller process behöver förhöjda rättigheter – för att installera programvara, ändra systemfiler eller köra en tjänst som root – är sudo den som avgör. Originalet skrevs i C. sudo-rs är en fullständig omskrivning i Rust, och det är nu den version som levereras som standard på världens mest använda Linuxdistribution.

Det ursprungliga sudo skrevs för länge sedan. Under den tiden ackumulerade C-kodbasen något annat vid sidan av funktionerna: en klass av minneshanteringssårbarheter som Rust eliminerar på kompilatornivå. Den mest betydande var CVE-2021-3156, kallad Baron Samedit. Sårbarheten låg oupptäckt i ungefär tio år och möjliggjorde lokal priviligieeskalering på alla större Linuxdistributioner. En lokal angripare med ett icke-root-skal kunde bli root. Canonical patchade det inom 24 timmar efter avslöjandet. Den arkitektoniska förutsättningen som tillät det – C:s manuella minneshantering – åtgärdades inte.

Vad Rust förändrar är inte hur koden skrivs utan vilka sorters buggar som kan finnas i den. Buffertspill, användning-efter-frigörelse-fel och null-pekar-dereferenser är en kategori av sårbarheter som Rust eliminerar vid kompilering – kompilatorn avvisar kod med dessa mönster innan den kan köras. För en programvara som hanterar priviligieeskalering är det en betydande begränsning att ta bort från hotbilden.

sudo-rs genomgick en fullständig oberoende säkerhetsgranskning 2023. Projektet uppnådde prestandaparitet med C-implementeringen. Canonical började leverera den som ett alternativ i tidigare Ubuntu-versioner innan den gjordes till standard i 26.04. Det stegvisa tillvägagångssättet återspeglar den försiktighet som är lämplig när man ersätter ett verktyg som, om det misslyckas, antingen kan låsa ute användare från systemåtkomst eller eskalera angripare till root.

Ubuntu 26.04 levererar också uutils coreutils – Rust-omskrivningar av grundläggande verktyg som ls, cat och mv. Men cp, mv och rm förblir på GNU C-implementeringarna för denna utgåva. Canonicals motivering: TOCTOU-racevillkor i dessa Rust-implementeringar medför risk för dataförstörelse som teamet bedömde vara för hög för en LTS-utgåva. Den stegvisa utrullningen avslöjar något ärligt om strategin att ’bara skriva om det i Rust’: verktygen finns, men migreringen kräver fallvis säkerhetsanalys, inte en generell växling.

Linuxkärnan började acceptera Rust-drivrutinskod 2022. Androidteamet har använt Rust för ny systemkod sedan 2021. Microsoft har skrivit om minneskänsliga Windows-komponenter i Rust. Att Ubuntu gör sudo-rs till standard är en meningsfull milstolpe eftersom det inte är ett experiment med en ny drivrutin eller en valfri komponent – det är autentiseringsskiktet för systemåtkomst, som levereras som standard till varje ny Ubuntu-installation.

CVE-mönstret som producerade Baron Samedit upphör för Ubuntu-användare under denna konfiguration. Huruvida andra större distributioner – Debian, Red Hat, Fedora, Arch – följer Ubuntus steg att standardisera sudo-rs är frågan som avgör förändringens omfattning. sudo-rs finns tillgängligt för alla dem. Canonical ansåg att granskningsresultaten var tillräckliga. Nästa beslut tillhör de andra underhållarna.

Taggar: , , , , ,

Diskussion

Det finns 0 kommentarer.