Rust je uključen među glavne jezike za razvoj Android platforme

Tvrtka Google najavila je uključivanje programskog jezika Rust među jezike dopuštene za razvoj Android platforme. Kompajler jezika Rust je uključen u stablo izvornog koda Androida još 2019. godine, no podrška za ovaj jezik ostala je eksperimentalna. Jedna od prvih komponenti na Rustu koja će biti isporučena u Androidu su nove implementacije mehanizama međuprocesne komunikacije Binder i Bluetooth staka.

Uvođenje Rusta provedeno je u sklopu projekta za jačanje sigurnosti, promociju sigurnih programerskih praksi i povećanje učinkovitosti otkrivanja problema pri radu s memorijom u Androidu. Napominje se da oko 70% svih kritičnih ranjivosti otkrivenih u Androidu uzrokovane su greškama pri radu s memorijom. Upotreba jezika Rust, koji se fokusira na sigurno upravljanje memorijom i omogućava automatsko upravljanje memorijom, smanjit će rizik od ranjivosti uzrokovanih greškama pri radu s memorijom, kao što su pristupanje područjima memorije nakon što su oslobođena i prekoračenje granica bafera.

Sigurno upravljanje memorijom osigurava se u Rustu tijekom kompajliranja kroz provjeru referenci, praćenje vlasništva nad objektima i računanje vremena života objekata (opseg vidljivosti), kao i kroz procjenu ispravnosti pristupa memoriji tijekom izvođenja koda. Rust također pruža sredstva za zaštitu od preopterećenja cijelih brojeva, zahtijeva obavezno inicijaliziranje varijabli prije upotrebe, bolje obrađuje greške u standardnoj biblioteci, primjenjuje koncept nepromjenjivosti (immutable) referenci i varijabli po defaultu, te nudi snažnu statičku tipizaciju za minimiziranje logičkih grešaka.

U Androidu je sigurno upravljanje memorijom osigurano u već podržanim jezicima Kotlin i Java, no oni nisu prikladni za razvoj sistemskih komponenti zbog velikih troškova. Rust omogućuje postizanje performansi sličnih jezicima C i C++, što ga čini pogodnim za razvoj niskorazinskih dijelova platforme i komponenata za interakciju s hardverom.

Kako bi se osigurala sigurnost koda u C i C++ na Androidu, primjenjuje se sandbox izolacija, statička analiza i fuzzing testiranje. Mogućnosti sandbox izolacije su ograničene i dosegle su svoj maksimum (daljnje dijeljenje na procese nije racionalno s obzirom na potrošnju resursa). Među ograničenjima primjene sandboxa ističu se visoki troškovi i povećana potrošnja memorije uzrokovana potrebom za stvaranjem novih procesa, kao i dodatna kašnjenja vezana uz korištenje IPC-a.

Međutim, sandbox ne uklanja ranjivosti u kodu, već samo smanjuje rizike i otežava provođenje napada, budući da za eksploataciju potrebno otkriti ne jednu, nego više ranjivosti. Metode temeljen na testiranju koda ograničene su time da za otkrivanje grešaka treba stvoriti uvjete koji izazivaju probleme. Pokriti sve moguće varijante nije moguće, stoga mnoge greške ostaju neprimijećene.

Za sustavne procese na Androidu, Google se drži 'pravila dvojice', prema kojem svaki dodani kod mora zadovoljiti najviše dva uvjeta od tri: rad s nepouzdanim ulaznim podacima, korištenje nesigurnog programskog jezika (C/C++) i izvršavanje bez stroge sandbox izolacije (prisustvo povišenih privilegija). Iz ovog pravila slijedi da kod za obradu vanjskih podataka mora ili biti sveden na minimalne privilegije (izoliran), ili biti napisan na sigurnom programskom jeziku.

Google ne namjerava prepisivati postojeći C/C++ kod na Rust, već planira koristiti ovaj jezik za razvoj novog koda. Korištenje Rusta za novi kod ima smisla jer statistika pokazuje da većina grešaka izlazi na vidjelo u novom ili nedavno izmijenjenom kodu. Konkretno, oko 50% otkrivenih grešaka vezanih uz memoriju u Androidu nalazi se u kodu napisanom prije manje od godinu dana.

Rust je uključen među glavne jezike za razvoj Android platforme


Izvor: opennet.ru
Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster