Rust yra viena iš pagrindinių „Android“ platformos kūrimo kalbų

„Google“ paskelbė, kad „Rust“ programavimo kalba bus įtraukta į „Android“ platformos kūrimo kalbas. „Rust“ kalbos kompiliatorius buvo įtrauktas į „Android“ šaltinio medį dar 2019 m., tačiau šios kalbos palaikymas liko eksperimentinis. Kai kurie pirmieji „Android“ planuojami „Rust“ komponentai apima naujus „Binder“ tarpprocesinio ryšio mechanizmo ir „Bluetooth“ dėklo įgyvendinimus.

„Rust“ įdiegimas buvo vykdomas įgyvendinant projektą, skirtą sustiprinti saugumą, skatinti saugius programavimo būdus ir padidinti problemų, susijusių su „Android“ atmintimi, nustatymo efektyvumą. Pažymima, kad apie 70% visų pavojingų Android spragų atsiranda dėl klaidų dirbant su atmintimi. Naudojant Rust, kuriame pagrindinis dėmesys skiriamas atminties saugai ir automatiniam atminties valdymui, sumažės pažeidžiamumų, atsirandančių dėl atminties klaidų, pvz., laisvos prieigos ir buferio viršijimo, rizika.

„Rust“ užtikrina atminties saugumą kompiliavimo metu, tikrindama nuorodų, objektų nuosavybės ir objekto eksploatavimo trukmės stebėjimo (apimčių) ir įvertindama atminties prieigos teisingumą vykdymo metu. Rust taip pat suteikia apsaugą nuo sveikųjų skaičių perpildymo, reikalauja, kad kintamųjų reikšmės būtų inicijuotos prieš naudojimą, geriau tvarko klaidas standartinėje bibliotekoje, pagal numatytuosius nustatymus naudoja nekintamų nuorodų ir kintamųjų koncepciją ir siūlo tvirtą statinį spausdinimą, kad būtų sumažintos loginės klaidos.

„Android“ atminties sauga teikiama jau palaikomomis „Kotlin“ ir „Java“ kalbomis, tačiau jos netinka kurti sistemos komponentus dėl didelių papildomų išlaidų. „Rust“ leidžia pasiekti našumą, artimą C ir C++ kalboms, todėl ją galima naudoti kuriant žemo lygio platformos dalis ir komponentus, skirtus sąveikai su aparatine įranga.

Siekdama užtikrinti C ir C++ kodų saugumą, „Android“ naudoja smėlio dėžės izoliaciją, statinę analizę ir neaiškią testavimą. Smėlio dėžės izoliavimo galimybės yra ribotos ir pasiekė savo galimybių ribą (toliau skaidyti į procesus resursų vartojimo požiūriu nepraktiška). Smėlio dėžės naudojimo apribojimai apima dideles pridėtines išlaidas ir padidėjusį atminties suvartojimą, atsirandantį dėl poreikio sukurti naujus procesus, taip pat papildomus vėlavimus, susijusius su IPC naudojimu.

Tuo pačiu metu smėlio dėžė nepašalina kodo spragų, o tik sumažina riziką ir apsunkina ataką, nes norint išnaudoti reikia nustatyti ne vieną, o keletą pažeidžiamumų. Kodo testavimu pagrįsti metodai yra riboti tuo, kad norint nustatyti klaidas, būtina sudaryti sąlygas problemai pasireikšti. Neįmanoma aprėpti visų galimų variantų, todėl daugelis klaidų lieka nepastebėtos.

Sistemos procesams „Android“ sistemoje „Google“ laikosi „dviejų taisyklės“, pagal kurią bet koks pridėtas kodas turi atitikti ne daugiau kaip dvi iš trijų sąlygų: dirbti su nepatvirtintais įvesties duomenimis, naudoti nesaugią programavimo kalbą (C/C++) ir veikia be griežtos smėlio dėžės izoliacijos (turėdamas padidintas teises). Ši taisyklė reiškia, kad išorinių duomenų apdorojimo kodas turi būti sumažintas iki minimalių privilegijų (izoliuotas) arba parašytas saugia programavimo kalba.

„Google“ nesiekia perrašyti esamo C/C++ kodo „Rust“, bet planuoja naudoti šią kalbą kurdama naują kodą. Tikslinga naujam kodui naudoti Rust, nes statistiškai dauguma klaidų atsiranda naujame arba neseniai pakeistame kode. Visų pirma, apie 50% aptiktų „Android“ atminties klaidų yra aptinkamos kode, parašytame mažiau nei prieš metus.

Rust yra viena iš pagrindinių „Android“ platformos kūrimo kalbų


Šaltinis: opennet.ru

Добавить комментарий