Pratite ZDNET: Dodajte nas kao željeni izvor na Googleu.
Ključni podaci ZDNET-a za van
- Rust će spasiti Linux od sigurnosnih slabosti svojstvenih C-u.
- Linuxu, suočenom s poplavom sigurnosnih problema koje je otkrila umjetna inteligencija, dobro bi došla pomoć.
- Ubuduće će sve više Linux koda biti napisano u Rustu.
na Konferencija Tjedna hrđenajveći na svijetu Jezik hrđe konferenciju u Utrechtu, Nizozemska, održavatelj stabilnog Linux kernela Greg Kroah-Hartman otvorio je riječima: “Ovdje sam da govorim o nepouzdanim podacima i Linuxu, i kako će nas Rust spasiti.” Nakon “dugih mjesec ili dva na sigurnosnom popisu kernela”, još je više pogurao tu točku: “Napravit ću još hrabriju izjavu i reći, ‘Ti ćeš spasiti Linux.’ Oprosti, sve je na tebi.”
Spremanje? Linux treba spremanje?
Ono o čemu je govorio bilo je iznenada otkrivena je poplava ozbiljnih sigurnosnih rupa u Linuxukao što su Dirty Frag, Copy Fail i Fragnesia, koji su izašli na vidjelo zahvaljujući najnovijim AI programima za otkrivanje grešaka.
Kao rezultat toga, Kroah-Hartman, koji je “vidio svaku pojedinačnu sigurnosnu grešku kernela” od 2005., rekao je da tim kernela sada izdaje “13 CVE-ova [Common Vulnerabilities and Exposures] dan, ili tako nešto, nešto ludo.” On misli da je Rust jedan od rijetkih realnih načina za smanjenje klase bugova koji dolaze iz C-ovih tradicionalnih zamki u rukovanju pogreškama i upravljanju resursima.
Također: Jedna od najjednostavnijih distribucija Linuxa koju sam ikada koristio također je jedna od najsigurnijih
Kroah-Hartman je ilustrirao te zamke sa stvarnim C bugovima u kernelu, uključujući 15 godina staru Bluetooth bug koja je dereferencirala pokazivač bez provjere i Xen bug gdje smo “zaboravili otključati” u putu pogreške. “Većina grešaka u jezgri su malene, minorne stvari”, objasnio je. “Uvjeti pogreške se ne provjeravaju, zaključavanja se ne zaboravljaju, neobjavljena sjećanja cure, a ranjivosti se s vremenom gomilaju. One ruše kernel. To je ono s čime živimo u C-u. Zbog toga nam se ne sviđa.”
Kroah-Hartman je tvrdio da je “najbolja ljepota Rusta” hvatanje tih grešaka u vrijeme izgradnje, a ne u pregledu. Na primjer, kada je u pitanju zaključavanje, istaknuo je Rustove apstrakcije zaključavanja u jezgri: “Jedini način na koji možete dobiti pristup unutarnjim pokazivačima struktura je da zgrabite tu bravu i automatski otpustite bravu. Kompajler to radi, to je zaštićeno, zaključavanje se događa, sve je sretno. Jednostavno ne možete napisati kod za pristup tim vrijednostima… bez zgrabite bravu. Kompilator će ne dopustiti ti.”
Ta svojstva, ustvrdio je, izravno uklanjaju veliki dio grešaka koje vidi: “Ovo će nam uštedjeti te dvije stvari. Prvo, 60% grešaka u kernelu upravo tamo, nestale su. Hvala.” Isplata je ranija, automatiziranija provedba: “Ako se to dogodi u vrijeme izgradnje, a ne u vrijeme pregleda, nemojte od mene tražiti održavatelja koji mora čitati vaš kod [and] recite: ‘Oh, onda ispravno provjerite tu vrijednost pogreške. Oh, jesi li dobro zgrabio brave na pravom mjestu?’ Rust nam to daje besplatno. Ovo je najbolja stvar ikada.”
Čak i ako Rust nestane sutra, tvrdi Kroah-Hartman, to je već natjeralo kernel da očisti C kod i sučelja. Izravno je zaslužan za Rustov utjecaj: “Ukrali smo ovo od Rusta. Hvala vam. To je dobra ideja, pa ako Rust sutra nestane, toliko smo očistili C kod u kernelu i prihvatili ideje. Zahvaljujemo vam, učinili ste Linux boljim s njim samim time što postojite.”
Također: Linux dobiva sigurnosni poziv za buđenje – zašto je to bilo neizbježno i nisam zabrinut
Opisao je nove C “čuvare” i brave s opsegom inspirirane Rustom: “Sada to imamo, imamo brave s C-skopom i alokatore, i dodali smo ovaj novi kod, zbog čega nam je teže pogrešno shvatiti, ali što je najvažnije, čini kodiranje jednostavnijim.” S više od 5000 programera i samo oko 700 održavatelja, rekao je, vrijeme pregleda je najslabiji resurs — pa su obrasci koji ispravnost očituju ključni: “Optimiziramo kako bismo kod učinili lakšim za pregled… Ako mogu lakše pregledati vaš kod, mogu ga baciti pogledom i reći: ‘Hej, vidi, očito si dobro shvatio jer koristiš taj obrazac. Sve je dobro i manje grešaka.'”
Rust vezovi tjeraju dublje promjene i na C stranu. Prisjećajući se rane konferencije Rust-for-Linux, rekao je da je, kada je vidio “stotine redaka Rust koda za rad s dva retka C koda,” shvatio, “Mogu promijeniti C kod. Možemo promijeniti C kod da učinimo Rust kod jednostavnijim. Nemamo problema promijeniti obje strane ove barijere. Učinimo to.” On sada pripisuje zasluge Rust-for-Linux tim s preoblikovanjem sučelja upravljačkog programa: “Uključena pravila i način na koji značajke i sučelja funkcioniraju za jezgru upravljačkog programa, te interakcija s C kodom u jezgri učinit će upravljačke programe jednostavnijima za pisanje i težima za pisanje [wrong]… Napravili su sjajan, sjajan posao.”
Osim jezičnih značajki, Kroah-Hartman je povezao Rust izravno sa širim pritiskom oko nepouzdanih podataka i idejom da je “svaki unos zao”. Posudivši rečenicu od Microsoftove sigurnosti, rekao je prisutnima: “Ako se nikada ne sjetite ničega drugog u mom govoru, samo zapamtite ove četiri riječi. Došle su od Microsoftove sigurnosti prije mnogo, mnogo godina. Shvatili su da je svaki unos zao. Morate potvrditi svaki unos.”
Opisao je tekući rad na ovojnici “nepouzdanog” tipa i metodi provjere valjanosti u Rustu koja nameće eksplicitnu provjeru valjanosti na mjestu gdje podaci prelaze iz nepouzdanih u pouzdane. “Imamo nešto što se zove nepouzdano da ga upišemo dodamo podacima, i svaki put kada stvarno želite dobiti pristup ovim podacima, to je samo tip, to nije zapravo kod, to će nagovijestiti kompajleru. Morate proći kroz provjeru valjanosti prije nego što im stvarno pristupite.” Ključna prednost za recenzente, rekao je, je da je “sve usredotočeno” na prijelazne točke: “Jedan odjeljak koda, možete vidjeti sav kod koji vrši provjeru valjanosti transformacije iz korisničkog prostora, nepouzdanih podataka u pouzdane podatke na jednom mjestu.”
Također: Microsoft iznenađuje svojom prvom poslužiteljskom distribucijom Linuxa: Azure Linux 4.0
Taj se model proteže na sve neprijateljskiji hardver: “Modelu i jezgri, mi čak i ne vjerujemo hardveru. Hardver je pun grešaka, ali sada možete imati zlonamjerni hardver, a vidimo sve više zlonamjernog hardvera.” Njegov cilj je označiti takve podatke kao nepouzdane i pratiti ih kroz tipski sustav, zatim koncentrirati energiju pregledavanja: “Ovo će nas stvarno spasiti, jer ne vjerujemo podacima… mislim da ću napraviti ovaj neznanstveni citat. To je ono što će spasiti Linux, kombinacija svih drugih stvari i nepouzdanih podataka. Mislim da će se riješiti 80% svih CVE-ova koje imati, a to je ogroman, ogroman broj.”
Rđa nije magija
To ne znači da on misli da je Rust magija. Nije. Naveo je jednu od prvih komponenti Rusta spojenih u kernel: logiku prikaza QR koda koja se koristi kada se kernel ruši. “Ta je logika bila napisana u Rustu. Poznato je da je imala memorijsku pogrešku. Dobila je međuspremnik i njegovu veličinu, a ostatak st koda nikada nije provjeravao veličinu međuspremnika… Mogao bi škrabati po cijeloj memoriji, jer se Rust može srušiti jednako loše kao i C.” Dakle, Rust “nije srebrni metak.”
On također ne potiče nikoga da ponovno napiše Linux kernel u Rustu. Jedan je sudionik upitao: “Potičete li zapravo ponovno pisanje stvari koje su već prisutne u kernelu s [Rust]?” Greg je odgovorio: “Ne, ne želimo prepisivanja, pa osim ako niste održavatelj i vlasnik te datoteke, učinite to samo za nove stvari. Ostavite postojeći C kod na miru i idemo dalje nakon toga.” Dao je Binderu, Androidova temeljna međuprocesna komunikacija (IPC)kao primjer gdje i C i Rust implementacije privremeno koegzistiraju kako bi se postigla paritet, nakon čega će “izbrisati C kod, jer im vjerujem, a oni su vlasnici i održavatelji oba.”
Također: Danas možete koristiti Linux 7.0 na ovih 7 distribucija – evo što možete očekivati
S vremenom očekuje da će se nova hardverska podrška jako odmaknuti Rustu: “Rust će s vremenom evoluirati u kernelu. Neki su podsustavi rekli, ‘Hej, samo novi upravljački programi za grafiku trebaju biti napisani u Rustu.’… S vremenom smo došli do kritične točke u kojoj možete pisati stvarno dobre upravljačke programe za sve različite vrste podsustava u Rustu i Linuxu. Mislim da ćete ovo vidjeti tijekom sljedeće godine ili dvije.” U tipičnom stilu Kroah-Hartmana, sažeo je model kao evolucijski: “Linux je evolucija, to nije inteligentan dizajn. Mi se razvijamo s vremenom, a s vremenom dolaze novi upravljački programi za novi hardver. Počet ćete koristiti taj novi hardver. Stari upravljački program jednostavno se više neće koristiti. Na kraju ćemo ih izbrisati, kao što radimo nakon otprilike 20 godina.”
U međuvremenu, Kroah-Hartman je rekao publici: “Danas je 36 milijuna redaka Linuxa u C-u, sa 113.000 redaka Rusta. Najviše od svega, ovo je obvezujuće.” Budući da upravljački programi čine najveći dio kernela, “Alice Ryhl, vrhunska Rust Android programerica i Rust-for-Linux programeri, morali su ići i napisati povezivanja za sve kako bi napisali maleni upravljački program u Rustu.” To je natjeralo zajednicu da ublaži svoje uobičajeno pravilo protiv neiskorištenog koda: “Također ne volimo dodavati kod kernelu koji se ne koristi, tako da je teško dodati vezanje…osim ako nemate korisnika za to. Dakle, to je pomalo problem kokoši i jajeta. Morali smo malo izmijeniti to pravilo.”
Također je označio skoru implementaciju u stvarnom svijetu: “Android telefoni će izaći, nadamo se uskoro, sa svim [Rust] kod u Binderu. Dakle, opet, milijarde uređaja uskoro bi mogle pokretati Rust u Linuxu.”
Ono što je naposljetku prodalo brojnim održavateljima jezgre, uključujući i njega, na Rustu je to što “olakšava pregled koda”. S CI [Continuous Integration] botovi koji provode nadogradnje i Rustov sustav tipova koji provode ključne invarijante, održavatelji se mogu “usredotočiti na logiku”, a ne na vođenje knjiga resursa: “Mogu brinuti o toj jednoj funkciji. Ne moram brinuti o ostatku ovih stvari, jer pretpostavljam da radi ispravno, jer je izgrađeno kako treba.”
Također: Linus Torvalds na AI tvrdi da ga to ljuti, a ono što istraživači sigurnosti nikada ne bi trebali učiniti
Interno, rekao je, vrhunski održavatelji već su se izjasnili o Rustovom statusu: “Održavatelji Linux kernela okupljamo se svake godine i razgovaramo o tome što procesi rade. Prošle smo godine rekli Eksperiment s hrđom je gotov. To nije eksperiment. Ovo je stvarno.” Obrazloženje: “Ljudi koji stoje iza toga su stvarni. Vjerujemo im. Znamo što rade. Pokazali su i uložili trud kako bi Rust učinili održivim jezikom u jezgri, a mi ćemo ovo zadržati. Idemo punom parom. I, kao i uvijek,” rekao je ironično, “svjetska dominacija se nastavlja.”
