Rust patrí medzi hlavné jazyky pre vývoj platformy Android

Google oznámil zaradenie programovacieho jazyka Rust medzi jazyky povolené pre vývoj platformy Android. Kompilátor jazyka Rust bol zahrnutý do zdrojového stromu Android už v roku 2019, ale podpora pre tento jazyk zostala experimentálna. Niektoré z prvých komponentov Rust plánovaných pre Android zahŕňajú nové implementácie medziprocesového komunikačného mechanizmu Binder a Bluetooth stack.

Uvedenie Rustu sa uskutočnilo v rámci projektu na posilnenie bezpečnosti, podporu bezpečných programovacích techník a zvýšenie efektivity identifikácie problémov pri práci s pamäťou v systéme Android. Je potrebné poznamenať, že približne 70 % všetkých nebezpečných zraniteľností identifikovaných v systéme Android je spôsobených chybami pri práci s pamäťou. Používanie programu Rust, ktorý sa zameriava na bezpečnosť pamäte a automatickú správu pamäte, zníži riziko zraniteľností spôsobených chybami pamäte, ako je napríklad voľný prístup a pretečenie vyrovnávacej pamäte.

Rust presadzuje bezpečnosť pamäte v čase kompilácie prostredníctvom kontroly referencií, vlastníctva objektu a sledovania životnosti objektu (rozsahy) a vyhodnocovaním správnosti prístupov do pamäte za behu. Rust tiež poskytuje ochranu proti pretečeniu celých čísel, vyžaduje, aby sa hodnoty premenných pred použitím inicializovali, má lepšie spracovanie chýb v štandardnej knižnici, štandardne používa koncept nemenných odkazov a premenných a ponúka silné statické písanie na minimalizáciu logických chýb.

V systéme Android je bezpečnosť pamäte poskytovaná v už podporovaných jazykoch Kotlin a Java, ktoré však nie sú vhodné na vývoj systémových komponentov kvôli vysokej réžii. Rust umožňuje dosiahnuť výkon blízky jazykom C a C++, čo umožňuje jeho použitie na vývoj nízkoúrovňových častí platformy a komponentov na interakciu s hardvérom.

Na zaistenie bezpečnosti kódu C a C++ používa Android izoláciu karantény, statickú analýzu a fuzzing testovanie. Možnosti izolácie sandboxu sú obmedzené a dostali sa na hranicu svojich možností (ďalšia fragmentácia do procesov je z pohľadu spotreby zdrojov nepraktická). Obmedzenia používania sandboxu zahŕňajú vysoké režijné náklady a zvýšenú spotrebu pamäte spôsobenú potrebou vytvárať nové procesy, ako aj ďalšie oneskorenia spojené s používaním IPC.

Sandbox zároveň neodstraňuje zraniteľné miesta v kóde, ale iba znižuje riziká a komplikuje útok, pretože zneužitie vyžaduje identifikáciu nie jednej, ale niekoľkých zraniteľností. Metódy založené na testovaní kódu sú limitované tým, že na identifikáciu chýb je potrebné vytvárať podmienky na to, aby sa problém prejavil. Nie je možné pokryť všetky možné možnosti, takže mnohé chyby zostávajú nepovšimnuté.

Pri systémových procesoch v systéme Android sa Google drží „pravidla dvoch“, podľa ktorého akýkoľvek pridaný kód nesmie spĺňať viac ako dve z troch podmienok: práca s neoverenými vstupnými údajmi, používanie nebezpečného programovacieho jazyka (C/C++) a beží bez prísnej izolácie sandboxu (s vyššími oprávneniami). Toto pravidlo znamená, že kód na spracovanie externých údajov musí byť buď zredukovaný na minimálne privilégiá (izolovaný), alebo napísaný v zabezpečenom programovacom jazyku.

Google nemá za cieľ prepísať existujúci kód C/C++ v Ruste, ale plánuje použiť tento jazyk na vývoj nového kódu. Pre nový kód má zmysel používať Rust, pretože štatisticky sa väčšina chýb objavuje v novom alebo nedávno zmenenom kóde. Konkrétne asi 50 % zistených chýb pamäte v systéme Android je zistených v kóde napísanom pred menej ako rokom.

Rust patrí medzi hlavné jazyky pre vývoj platformy Android


Zdroj: opennet.ru

Pridať komentár