A Rust az Android platform fejlesztésének fő nyelvei között szerepel

A Google bejelentette, hogy a Rust programozási nyelvet is felveszi az Android platform fejlesztésére engedélyezett nyelvek közé. A Rust nyelvi fordító már 2019-ben bekerült az Android forrásfába, de ennek a nyelvnek a támogatása kísérleti jellegű maradt. Az Androidra tervezett első Rust-komponensek közé tartozik a Binder interprocess kommunikációs mechanizmus és a Bluetooth-verem új megvalósítása.

A Rust bevezetése egy projekt részeként valósult meg, amelynek célja a biztonság megerősítése, a biztonságos programozási technikák népszerűsítése és a problémák azonosításának hatékonyságának növelése az Android memóriájával való munka során. Megjegyzendő, hogy az Androidban azonosított összes veszélyes sérülékenység körülbelül 70%-át a memóriával végzett munka során fellépő hibák okozzák. A memóriabiztonságra és az automatikus memóriakezelésre összpontosító Rust használata csökkenti a memóriahibák, például az utólagos hozzáférés és a puffertúllépés által okozott sebezhetőségek kockázatát.

A Rust erősíti a memória biztonságát a fordítási időben a referencia-ellenőrzés, az objektumok tulajdonjogának és az objektum élettartamának követésének (hatóköreinek), valamint a futásidejű memória-hozzáférések helyességének kiértékelésével. A Rust védelmet nyújt az egész számok túlcsordulása ellen is, megköveteli a változók értékeinek inicializálását használat előtt, jobb hibakezelést biztosít a szabványos könyvtárban, alapértelmezés szerint a megváltoztathatatlan hivatkozások és változók koncepcióját használja, és erős statikus gépelést kínál a logikai hibák minimalizálása érdekében.

Az Androidban a memóriabiztonság a már támogatott Kotlin és Java nyelveken biztosított, de a magas rezsi miatt nem alkalmasak rendszerkomponensek fejlesztésére. A Rust lehetővé teszi a C és C++ nyelvekhez közeli teljesítmény elérését, ami lehetővé teszi a platform alacsony szintű részeinek és a hardverrel való interakcióhoz szükséges komponensek fejlesztéséhez.

A C és C++ kódok biztonságának biztosítása érdekében az Android sandbox elkülönítést, statikus elemzést és összemosó tesztelést használ. A sandbox izolálás lehetőségei korlátozottak és elérték képességeik határát (a további folyamatokba bontás az erőforrás-felhasználás szempontjából nem praktikus). A sandbox használatának korlátai közé tartoznak a nagy általános költségek és az új folyamatok létrehozásának szükségessége miatti megnövekedett memóriafelhasználás, valamint az IPC használatához kapcsolódó további késések.

A sandbox ugyanakkor nem szünteti meg a kód sérülékenységét, csak csökkenti a kockázatokat és bonyolítja a támadást, hiszen a kihasználáshoz nem egy, hanem több sebezhetőséget kell azonosítani. A kódtesztelésen alapuló módszerek korlátozottak abban, hogy a hibák azonosításához meg kell teremteni a feltételeket a probléma megnyilvánulásához. Nem lehet minden lehetséges lehetőséget lefedni, így sok hiba észrevétlen marad.

Az Android rendszerfolyamatainál a Google betartja a „kettős szabályt”, amely szerint bármely hozzáadott kódnak legfeljebb kettőnek kell megfelelnie a három feltétel közül: nem érvényesített bemeneti adatokkal való munkavégzés, nem biztonságos programozási nyelv (C/C++), valamint szigorú sandbox elkülönítés nélkül fut (emelt jogosultságokkal). Ez a szabály azt jelenti, hogy a külső adatok feldolgozására szolgáló kódot vagy minimális jogosultságokra kell csökkenteni (elszigetelni), vagy biztonságos programozási nyelven kell megírni.

A Google-nak nem célja a meglévő C/C++ kód átírása Rust nyelven, de azt tervezi, hogy ezt a nyelvet használja új kód fejlesztéséhez. Célszerű a Rust használata új kódhoz, mert statisztikailag a legtöbb hiba az új vagy nemrégiben módosított kódban jelenik meg. Különösen az Android észlelt memóriahibáinak körülbelül 50%-át a kevesebb mint egy éve írt kód észleli.

A Rust az Android platform fejlesztésének fő nyelvei között szerepel


Forrás: opennet.ru

Hozzászólás