Greg Kroah-Hartman, responsabil pentru suportul ramurilor stabile și „staging” ale kernel-ului Linux și menținut în 16 subsisteme ale kernel-ului, a susținut o prezentare la conferința Rust Week 2026, în care a discutat despre cum limbajul Rust poate ajuta la prevenirea apariției vulnerabilităților în kernel cauzate de greșelile tipice ale programatorilor în C, legate de gestionarea memoriei, blocări, tratamente de erori și manipularea datelor nesigure. Principalul avantaj al lui Rust este abilitatea de a detecta astfel de erori în timpul procesului de compilare, nu în timpul revizuirii codului de către oameni. Totuși, Rust nu este considerat o panacee care să elimine toate problemele, iar nimeni nu își propune să rescrie kernel-ul în Rust: se așteaptă o implementare graduală a Rust prin utilizarea sa pentru noi drivere și subsisteme.
Ca exemplu de erori în kernel care ar fi putut fi evitate prin utilizarea Rust, a fost menționată o eroare în subsistemul Bluetooth, care a rămas neobservată timp de 15 ani, și o problemă în hiper-vizorul Xen. În primul caz, programatorul a efectuat dereferirea unui pointer fără verificare, iar în al doilea, a uitat să elimine blocarea în codul de gestionare a erorilor.
Potrivit lui Greg, majoritatea erorilor din kernel sunt cauzate de astfel de detalii minore, care se acumulează în timp și apar ca vulnerabilități. În Rust, multe dintre aceste probleme sunt prevenite de compilator; de exemplu, abstracțiile Rust pentru blocări permit accesul la pointerele interne ale structurilor doar după ce blocarea corespunzătoare a fost obținută, care este eliminată automat. Fără obținerea blocării, accesul la pointerele structurilor în Rust nu este posibil.
Greg consideră că aceste capabilități ale Rust ar fi împiedicat apariția a 60% din erorile identificate în kernel, iar verificările efectuate de compilator ar fi scutit dezvoltatorii de a pierde timp discutând cu autorii despre corectitudinea gestionării erorilor și justificarea blocărilor în locurile corecte. Mai mult, implementarea suportului pentru Rust a avut deja un impact benefic și asupra codului C din kernel, datorită îmbunătățirii codului C și a interfețelor, precum și adoptării unor tehnici de dezvoltare (de exemplu, au fost implementate blocări cu domeniu de vizibilitate restrâns).
Datorită sistemului de tipuri care garantează respectarea regulilor stabilite și a aplicării sistemelor de integrare continuă care verifică codul în etapa de compilare, cei care revizuiesc modificările în Rust pot să se concentreze asupra verificării logicii funcționării, mai degrabă decât să urmărească manipulările cu resursele. Utilizarea Rust permite, de asemenea, o atenție mai mare asupra datelor provenite de la echipamente sau din sisteme externe. Acest lucru se realizează prin delimitarea explicită a datelor de încredere și a celor neîncrezătoare la nivelul sistemului de tipuri: dezvoltatorul trebuie doar să efectueze o analiză la trecerea dintr-o stare neîncrezătoare în una de încredere.
În ultima vreme, echipa responsabilă pentru securitatea nucleului publică în fiecare zi aproximativ 13 rapoarte despre vulnerabilități, ceea ce, în contextul dinamicii anterioare de identificare a vulnerabilităților, este perceput ca o nebunie (de exemplu, ieri au fost publicate 277 de rapoarte despre vulnerabilități în nucleu). Potrivit lui Greg, utilizarea Rust este una dintre modalitățile reale de a reduce numărul erorilor din nucleu cauzate de greșelile tradiționale în gestionarea erorilor și a resurselor. Suportul pentru Rust în nucleu a ieșit deja din etapa experimentală și la sfârșitul anului trecut a fost recunoscută ca o capacitate standard a nucleului.

Sursa: opennet.ro
