Rust este inclusă printre principalele limbi pentru dezvoltarea platformei Android

Google a anunțat includerea limbajului de programare Rust printre limbajele permise pentru dezvoltarea platformei Android. Compilatorul limbajului Rust a fost inclus în arborele sursă Android încă din 2019, dar suportul pentru acest limbaj a rămas experimental. Unele dintre primele componente Rust planificate pentru Android includ noi implementări ale mecanismului de comunicare între procese Binder și stiva Bluetooth.

Introducerea Rust a fost realizată ca parte a unui proiect de consolidare a securității, de promovare a tehnicilor de programare sigure și de creștere a eficienței identificării problemelor atunci când lucrați cu memoria în Android. Se observă că aproximativ 70% din toate vulnerabilitățile periculoase identificate în Android sunt cauzate de erori la lucrul cu memoria. Folosirea Rust, care se concentrează pe siguranța memoriei și gestionarea automată a memoriei, va reduce riscul de vulnerabilități cauzate de erori de memorie, cum ar fi accesul după liber și depășirile de buffer.

Rust impune siguranța memoriei în timpul compilării prin verificarea referințelor, proprietatea obiectului și urmărirea duratei de viață a obiectelor (sfere) și prin evaluarea corectitudinii acceselor la memorie în timpul execuției. Rust oferă, de asemenea, protecție împotriva depășirilor de numere întregi, necesită ca valorile variabilelor să fie inițializate înainte de utilizare, are o mai bună gestionare a erorilor în biblioteca standard, utilizează implicit conceptul de referințe și variabile imuabile și oferă o tastare statică puternică pentru a minimiza erorile logice.

În Android, siguranța memoriei este furnizată în limbile deja acceptate Kotlin și Java, dar nu sunt potrivite pentru dezvoltarea componentelor sistemului din cauza supraîncărcării mari. Rust face posibilă obținerea unor performanțe apropiate de limbajele C și C++, ceea ce îi permite să fie utilizat pentru dezvoltarea părților de nivel scăzut ale platformei și a componentelor pentru interacțiunea cu hardware-ul.

Pentru a asigura securitatea codului C și C++, Android folosește izolarea sandbox, analiza statică și testarea fuzzing. Capacitățile de izolare sandbox sunt limitate și au atins limita capacităților lor (fragmentarea ulterioară în procese este impracticabilă din punctul de vedere al consumului de resurse). Limitările utilizării sandbox includ costuri generale mari și consum crescut de memorie cauzat de necesitatea de a genera noi procese, precum și întârzieri suplimentare asociate cu utilizarea IPC.

În același timp, sandbox nu elimină vulnerabilitățile din cod, ci doar reduce riscurile și complică atacul, deoarece exploatarea necesită identificarea nu a uneia, ci a mai multor vulnerabilități. Metodele bazate pe testarea codului sunt limitate prin aceea că, pentru a identifica erorile, este necesar să se creeze condiții pentru ca problema să se manifeste. Nu este posibil să acoperiți toate opțiunile posibile, așa că multe erori trec neobservate.

Pentru procesele de sistem din Android, Google respectă „regula celor doi”, conform căreia orice cod adăugat nu trebuie să îndeplinească mai mult de două din trei condiții: lucrul cu date de intrare nevalidate, utilizarea unui limbaj de programare nesigur (C/C++) și rulează fără o izolare strictă în sandbox (având privilegii ridicate). Această regulă implică faptul că codul pentru prelucrarea datelor externe trebuie fie redus la privilegii minime (izolat), fie scris într-un limbaj de programare securizat.

Google nu își propune să rescrie codul C/C++ existent în Rust, dar intenționează să folosească acest limbaj pentru a dezvolta cod nou. Este logic să folosiți Rust pentru codul nou, deoarece, statistic, majoritatea erorilor apar în codul nou sau modificat recent. În special, aproximativ 50% dintre erorile de memorie detectate în Android sunt detectate în codul scris cu mai puțin de un an în urmă.

Rust este inclusă printre principalele limbi pentru dezvoltarea platformei Android


Sursa: opennet.ru

Adauga un comentariu