A Google bemutatta nemrég a befogadás programozási nyelv Rozsda az engedélyezett nyelvek között Android fejlesztéshez.
Mivel a Rust fordító 2019-ben bekerült az Android forrásfába, de a nyelvi támogatás kísérleti jellegű maradt. Az Androidra szállított első Rust-komponensek közül néhány a Binder folyamatközi kommunikációs mechanizmus és a Bluetooth-verem új megvalósítása.
A Rust megvalósítás biztonság erősítését célzó projekt részeként valósult meg, elősegíti a biztonságos kódolási technikákat, és javítja a problémák azonosításának hatékonyságát az Android memóriájával végzett munka során. Megfigyelhető, 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 Rust nyelv használata, hogy a biztonságos memóriakezelésre összpontosít és automatikus memóriakezelést biztosít, csökkenti a memóriakezelés során fellépő hibák által okozott sebezhetőségek kockázatát, mint például a memóriaterület elérése a felszabadítás és a pufferkorlátok túllépése után.
A biztonságos memóriakezelést a Rustban a felépítési időben a hivatkozások ellenőrzése, az objektumok tulajdonjogának és az objektum élettartamának (hatókörének) nyomon követése, valamint a futásidőben a memóriához való hozzáférés helyességének értékelése biztosítja.
Rozsda eszközöket is biztosít a túlcsordulás elleni védelemre egész szám, megköveteli a változóértékek kötelező inicializálását használat előtt, jobban kezeli a szabványos könyvtár hibáit, alapértelmezés szerint átveszi a hivatkozások és a megváltoztathatatlan változók koncepcióját, és erős statikus írást kínál a logikai hibák minimalizálása érdekében.
Androidon a biztonságos memóriakezelés Kotlin és Java nyelven érhető el már támogatott, de rendszerelemek fejlesztésére a nagy rezsi miatt nem alkalmas.
A Rust lehetővé teszi a C és C ++ nyelvekhez közeli teljesítmény elérését, lehetővé téve a platform alacsony szintű részeinek és a hardverrel való interfészhez szükséges összetevők fejlesztését.
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ó teszteket használ. A homokozó elszigetelési képességek korlátozottak, és elérték képességeik határát (a folyamatok további széttagolása erőforrás-felhasználás szempontjából nem célszerű).
A sandbox használatának korlátai között megemlítik az új folyamatok generálásának szükségessége miatti magas rezsiköltséget és nagyobb memóriafelhasználást, valamint az IPC használatához kapcsolódó további késleltetést.
A sandbox ugyanakkor nem szünteti meg a kódban található sebezhetőségeket, 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ési módszerek korlátozottak, mert a hibák észleléséhez 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 rendszerfolyamataihoz A Google betartja a „kettő szabályát”, szerint amelyhez egyetlen hozzáadott kód sem felelhet meg három feltételnél több mint kettőnek- Dolgozzon ellenőrizetlen bemeneti adatokkal, használjon nem biztonságos programozási nyelvet (C / C ++), és futtasson hard sandbox elkülönítés nélkül (emelt jogosultságokkal).
Ebből a szabályból következik, hogy a külső adatok feldolgozására szolgáló kódot a legkisebb jogosultságra kell redukálni (elszigetelni), vagy biztonságos programozási nyelven kell megírni.
A Google nem célja a kód átírása Rustban létező C / C ++, de azt tervezi, hogy ezt a nyelvet használja új kód kifejlesztéséhez.
Célszerű a Rust használata új kódhoz, mivel statisztikailag a legtöbb hiba az új vagy nemrégiben módosított kódban jelenik meg. Az Androidban észlelt memóriahibák körülbelül 50%-a kevesebb, mint egy éve írt kódban észlelhető.
forrás: https://security.googleblog.com
Az irónia, amikor a legnagyobb versenytársad a végén átvesz valamit, amit a saját céljaid érdekében segítettél kifejleszteni… A rozsda egyre növekszik.