Rust je vključen med glavne jezike za razvoj platforme Android

Google je napovedal vključitev programskega jezika Rust med jezike, dovoljene za razvoj platforme Android. Prevajalnik jezika Rust je bil vključen v izvorno drevo Android že leta 2019, vendar je podpora za ta jezik ostala eksperimentalna. Nekatere od prvih komponent Rust, načrtovanih za Android, vključujejo nove izvedbe medprocesnega komunikacijskega mehanizma Binder in sklada Bluetooth.

Predstavitev Rusta je bila izvedena v okviru projekta krepitve varnosti, promocije varnih tehnik programiranja in povečanja učinkovitosti prepoznavanja težav pri delu s pomnilnikom v sistemu Android. Ugotovljeno je, da je približno 70% vseh nevarnih ranljivosti, ugotovljenih v Androidu, posledica napak pri delu s pomnilnikom. Uporaba Rusta, ki se osredotoča na varnost pomnilnika in samodejno upravljanje pomnilnika, bo zmanjšala tveganje za ranljivosti, ki jih povzročajo napake pomnilnika, kot so dostop po brezplačnem dostopu in prekoračitev medpomnilnika.

Rust uveljavlja varnost pomnilnika v času prevajanja s preverjanjem sklicevanja, lastništvom objekta in sledenjem življenjske dobe objekta (obseg) ter z ocenjevanjem pravilnosti dostopov do pomnilnika med izvajanjem. Rust zagotavlja tudi zaščito pred celoštevilskimi prelivi, zahteva inicializacijo vrednosti spremenljivk pred uporabo, ima boljšo obravnavo napak v standardni knjižnici, privzeto uporablja koncept nespremenljivih referenc in spremenljivk ter ponuja močno statično tipkanje za zmanjšanje logičnih napak.

V Androidu je varnost pomnilnika zagotovljena v že podprtih jezikih Kotlin in Java, vendar zaradi visokih stroškov niso primerni za razvoj sistemskih komponent. Rust omogoča doseganje zmogljivosti, ki je blizu jezikom C in C++, kar omogoča njegovo uporabo za razvoj nizkonivojskih delov platforme in komponent za interakcijo s strojno opremo.

Za zagotovitev varnosti kode C in C++ Android uporablja izolacijo peskovnika, statično analizo in testiranje fuzzinga. Zmogljivosti izolacije peskovnika so omejene in so dosegle mejo svojih zmožnosti (nadaljnja drobitev na procese je nepraktična z vidika porabe virov). Omejitve uporabe peskovnika vključujejo velike režijske stroške in povečano porabo pomnilnika zaradi potrebe po ustvarjanju novih procesov, pa tudi dodatne zamude, povezane z uporabo IPC.

Hkrati peskovnik ne odpravlja ranljivosti v kodi, ampak le zmanjšuje tveganja in otežuje napad, saj izkoriščanje zahteva identifikacijo ne ene, ampak več ranljivosti. Metode, ki temeljijo na testiranju kode, so omejene v tem, da je za prepoznavanje napak potrebno ustvariti pogoje, da se težava pokaže. Ni mogoče zajeti vseh možnih možnosti, zato veliko napak ostane neopaženih.

Za sistemske procese v Androidu se Google drži "pravila dveh", po katerem mora katera koli dodana koda izpolnjevati največ dva od treh pogojev: delo z nepreverjenimi vhodnimi podatki, uporaba nevarnega programskega jezika (C/C++) in deluje brez stroge izolacije peskovnika (ima povišane privilegije). To pravilo pomeni, da mora biti koda za obdelavo zunanjih podatkov zmanjšana na minimalne privilegije (izolirana) ali napisana v varnem programskem jeziku.

Google ne namerava prepisati obstoječe kode C/C++ v Rust, ampak načrtuje uporabo tega jezika za razvoj nove kode. Za novo kodo je smiselno uporabiti Rust, ker se statistično večina napak pojavi v novi ali nedavno spremenjeni kodi. Zlasti približno 50 % odkritih pomnilniških napak v sistemu Android je odkritih v kodi, napisani pred manj kot enim letom.

Rust je vključen med glavne jezike za razvoj platforme Android


Vir: opennet.ru

Dodaj komentar