„Google“ paskelbė, kad į savo platformą įtrauks „Rust“ programavimo kalbą. Android„Rust“ kalbos kompiliatorius buvo įtrauktas į šaltinio medį. Android dar 2019 m., tačiau šios kalbos palaikymas išliko eksperimentinis. Kai kurie pirmieji „Rust“ komponentai, kuriuos planuota išleisti m. Android, yra nauji „Binder“ tarpprocesinio ryšio mechanizmo ir „Bluetooth“ steko įgyvendinimai.
„Rust“ diegimas yra projekto, skirto sustiprinti saugumą, skatinti saugią programavimo praktiką ir pagerinti atminties problemų nustatymo efektyvumą, dalis. AndroidPažymima, kad apie 70 % visų nustatytų pavojingų pažeidžiamumų Android, kuriuos sukelia atminties klaidos. Naudojant „Rust“ kalbą, kuri orientuota į atminties saugumą ir užtikrina automatinį atminties valdymą, sumažės atminties klaidų sukeliamų pažeidžiamumų, pvz., prieigos prie atminties po jos atlaisvinimo ir buferio perpildymo, 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 saugumą palaiko jau palaikomos kalbos Kotlin ir Java, tačiau jos netinka sistemų komponentų kūrimui dėl didelių sąnaudų. „Rust“ siūlo našumą, artimą C ir C++, todėl tinka kurti žemo lygio platformos komponentus ir aparatinės įrangos sąveikos komponentus.
Siekiant užtikrinti C ir C++ kodo saugumą Android Naudojamas „smėlio dėžės“ tipo izoliavimas, statinė analizė ir neapibrėžtas testavimas. „smėlio dėžės“ tipo izoliavimo galimybės yra ribotos ir pasiekė savo ribas (tolesnis skaidymas į procesus yra nepraktiškas išteklių naudojimo požiūriu). „smėlio dėžės“ tipo testavimo apribojimai apima dideles pridėtines išlaidas ir padidėjusį atminties suvartojimą, kurį sukelia poreikis kurti naujus procesus, taip pat papildomą delsą, susijusią 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 „Google“ laikosi „dviejų taisyklių“, kuri teigia, kad bet koks pridėtas kodas turi atitikti ne daugiau kaip dvi iš trijų sąlygų: tvarkyti nepatikimą įvestį, naudoti nesaugią programavimo kalbą (C/C++) ir vykdyti be griežtos „smėlio dėžės“ aplinkos (turint padidintas teises). Ši taisyklė reiškia, kad kodas, kuris apdoroja išorinius duomenis, turi būti arba sumažintas iki minimalių teisių (izoliuotas), arba parašytas saugia programavimo kalba.
„Google“ nesiekia perrašyti esamo C/C++ kodo „Rust“ kalba, bet planuoja naudoti šią kalbą kurdama naują kodą. Naudoti „Rust“ naujam kodui yra prasminga, nes statistiškai dauguma klaidų atsiranda naujame arba neseniai modifikuotame kode. Visų pirma, apie 50 % aptiktų atminties klaidų... Android randami kode, parašytame mažiau nei prieš metus.

Šaltinis: opennet.ru
