Greg Kroah-Hartman, responsabil cu întreținerea ramurii stabile a nucleului Linux, a exprimat sprijin pentru dezvoltarea de noi componente ale nucleului în limbajul Rust. Ca persoană prin care trece toată informația despre erorile și vulnerabilitățile nucleului Linux în ultimii 15 ani, el afirmă că majoritatea erorilor din nucleu sunt cauzate de particularitățile neprevăzute ale limbajului C, care sunt complet excluse în codul scris în Rust.
Folosind Rust, probleme precum accesarea memoriei după eliberare, depășirea limitelor buffer-ului (parțial), eliberarea incorectă a resurselor în timpul gestionării erorilor și verificările uitate ale codurilor de eroare vor rămâne în trecut, permițând întreținătorilor să se concentreze asupra erorilor reale, precum stările de concurență și problemele de logică, în loc să se piardă în detalii în timpul revizuirilor.
Codul vechi existent scris în C nu va dispărea, dar pentru codul nou și noile drivere, implementarea Rust va ridica semnificativ calitatea. De asemenea, introducerea Rust va permite structurarea interfețelor de programe interne ale nucleului, astfel încât să fie practic excluse erorile de utilizare a API-ului intern — s-au acumulat prea multe API-uri complicate și confuze în nucleu, care cauzează o mare povară asupra întreținătorilor în munca lor de a verifica dacă aceste API-uri sunt utilizate corect. Pe măsură ce se dezvoltă wrapper-ele Rust, întreținătorii vor avea ocazia să regândească și să organizeze API-urile, ceea ce va aduce beneficii tuturor, inclusiv celor care folosesc limbajul C.
Greg nu consideră Rust o „gloanță argintie” care va rezolva toate problemele din nucleu, dar acest limbaj va ajuta cu siguranță într-un număr mare de situații. Suportul pentru Rust va satisface, de asemenea, nevoia dezvoltatorilor de drivere, care speră să obțină un instrument care să le permită să scrie cod pentru hardware-ul lor, excluzând multe tipuri de erori. În ceea ce privește amestecarea mai multor limbaje, Greg nu vede o problemă mare în acest sens, considerând că în trecut dezvoltatorii nucleului s-au descurcat cu sarcini și mai serioase, iar nu există un motiv pentru a renunța la promovarea în nucleu a unor noi idei bune care vor ajuta la asigurarea succesului proiectului pentru următorii 20+ ani.
La discuție s-a alăturat și Kees Cook, fost administrator principal de sistem la kernel.org și lider al echipei de securitate Ubuntu. Kees a subliniat că nu este vorba despre rescrierea codului existent în nucleu, ci despre oferirea posibilității de a utiliza Rust pentru a crea noi drivere și subsisteme. Utilizarea Rust pentru codul nou va permite nu doar reducerea numărului de erori legate de gestionarea memoriei, ci și scurtarea timpului de dezvoltare. Viteza de dezvoltare crește datorită reducerii efortului de depanare și a garanțiilor stricte oferite de limbaj, care permit identificarea erorilor într-o etapă timpurie a scrierii codului, chiar înainte de începerea testării produsului.
Eficiența tacticii de utilizare a Rust pentru îmbunătățirea calității codului nou a fost deja demonstrată de Google pe platforma Android. S-a arătat că principala sursă a problemelor de securitate este codul nou, iar îmbunătățirii calității acestuia ar trebui să i se acorde o atenție deosebită. În cazul codului vechi, există o dependență exponențială a securității de timp (de exemplu, codul de 5 ani, în medie, are o densitate a vulnerabilităților de 3,4 ori mai mică decât codul nou).
Sursa: opennet.ro
