Google ka njoftuar përfshirjen e gjuhës së programimit Rust në listën e gjuhëve të lejuara për zhvillimin e platformës Android. Kompilatori i Rust ishte përfshirë në pemën e kodit burimor të Android që në vitin 2019, por mbështetja për këtë gjuhë mbetej ende eksperimentale. Ndër komponentët e parë në Rust që planifikohet të shpërndahen me Android janë implementimet e reja të mekanizmit të komunikimit ndërprocesor Binder dhe të stack-ut Bluetooth.
Integrimi i Rust është bërë në kuadër të projektit për rritjen e sigurisë, promovimin e praktikave të programimit të sigurt dhe përmirësimin e efikasitetit në zbulimin e problemeve që lidhen me menaxhimin e memories në Android. Theksohet se rreth 70% e të gjitha dobësive të rrezikshme të zbuluara në Android shkaktohen nga gabime në punën me memorien. Përdorimi i Rust, i cili është i fokusuar te puna e sigurt me memorien dhe ofron menaxhim automatik të memories, do të ndihmojë në uljen e rrezikut të shfaqjes së dobësive të shkaktuara nga gabime të tilla si qasja në një zonë memorieje pas çlirimit të saj dhe tejkalimi i kufijve të buffer-it.
Puna e sigurt me memorien në Rust sigurohet që në fazën e kompilimit përmes verifikimit të referencave, ndjekjes së pronësisë së objekteve dhe llogaritjes së kohëzgjatjes së jetës së tyre (fushës së vlefshmërisë), si edhe përmes vlerësimit të korrektësisë së qasjes në memorie gjatë ekzekutimit të kodit. Rust gjithashtu ofron mjete mbrojtjeje ndaj tejmbushjeve të numrave të plotë, kërkon inicializimin e detyrueshëm të vlerave të variablave përpara përdorimit, trajton më mirë gabimet në bibliotekën standarde, zbaton si parazgjedhje konceptin e pandryshueshmërisë (immutable) për referencat dhe variablat, si dhe ofron tipizim statik të fortë për të minimizuar gabimet logjike.
Në Android, puna e sigurt me memorien sigurohet edhe nga gjuhët tashmë të mbështetura Kotlin dhe Java, por ato nuk janë të përshtatshme për zhvillimin e komponentëve sistemorë për shkak të kostove të larta shtesë. Rust bën të mundur arritjen e performancës së afërt me gjuhët C dhe C++, gjë që lejon përdorimin e tij për zhvillimin e pjesëve të nivelit të ulët të platformës dhe të komponentëve për ndërveprim me pajisjen.
Për të garantuar sigurinë e kodit në C dhe C++ në Android, përdoren izolimi sandbox, analiza statike dhe testimi fuzzing. Mundësitë e izolimit sandbox janë të kufizuara dhe kanë arritur kufirin e tyre (ndarja e mëtejshme në procese nuk është e arsyeshme nga pikëpamja e konsumit të burimeve). Ndër kufizimet e përdorimit të sandbox-it përmenden kostot e larta shtesë dhe rritja e konsumit të memories, të shkaktuara nga nevoja për të krijuar procese të reja, si edhe vonesat shtesë që lidhen me përdorimin e IPC.
Megjithatë, sandbox-i nuk i eliminon cenueshmëritë në kod, por vetëm ul rreziqet dhe e vështirëson kryerjen e një sulmi, pasi për shfrytëzim kërkohet zbulimi jo i një, por i disa cenueshmërive. Metodat e bazuara në testimin e kodit kanë kufizimet e tyre, sepse për të zbuluar gabimet duhet të krijohen kushtet që problemi të shfaqet. Nuk është e mundur të mbulohen të gjitha variantet e mundshme, prandaj shumë gabime mbeten pa u vënë re.
PĂ«r proceset e sistemit nĂ« Android, Google ndjek ârregullin e dyshesâ, sipas tĂ« cilit çdo kod i ri i shtuar nuk duhet tĂ« pĂ«rmbushĂ« mĂ« shumĂ« se dy nga tre kushtet e mĂ«poshtme: punĂ« me tĂ« dhĂ«na hyrĂ«se tĂ« paverifikuara, pĂ«rdorim i njĂ« gjuhe programimi tĂ« pasigurt (C/C++) dhe ekzekutim pa izolim tĂ« rreptĂ« sandbox (pra me privilegje tĂ« ngritura). Nga ky rregull rrjedh se kodi pĂ«r pĂ«rpunimin e tĂ« dhĂ«nave tĂ« jashtme ose duhet tĂ« kufizohet nĂ« privilegje minimale (tĂ« izolohet), ose tĂ« shkruhet nĂ« njĂ« gjuhĂ« programimi tĂ« sigurt.
Google nuk synon të rishkruajë në Rust kodin ekzistues në C/C++, por planifikon ta përdorë këtë gjuhë për zhvillimin e kodit të ri. Përdorimi i Rust për kodin e ri ka kuptim, sepse sipas statistikave shumica e gabimeve dalin në pah në kodin e ri ose në atë të ndryshuar së fundmi. Konkretisht, rreth 50% e gabimeve të zbuluara të menaxhimit të memories në Android gjenden në kod të shkruar më pak se një vit më parë.

Burimi: opennet.ru
