Rust byl zařazen mezi hlavní jazyky pro vývoj platformy Android.

Společnost Google oznámila zařazení programovacího jazyka Rust mezi jazyky povolené pro vývoj platformy Android. Kompilátor jazyka Rust byl zahrnut do stromu zdrojových kódů Android již v roce 2019, ale podpora tohoto jazyka zůstávala experimentální. Mezi prvními komponentami na Rustu, které se plánují dodávat do Androidu, jsou nové implementace mechanismu meziprocesní komunikace Binder a Bluetooth stacku.

Zavedení Rustu bylo prováděno v rámci projektu pro zvýšení bezpečnosti, propagaci praxí bezpečného programování a zlepšení efektivity detekce problémů s pamětí v Androidu. Uvádí se, že přibližně 70 % všech nebezpečných zranitelností, které byly odhaleny v Androidu, je způsobeno chybami při práci s pamětí. Použití jazyka Rust, který se zaměřuje na bezpečnou práci s pamětí a poskytuje automatické řízení paměti, sníží riziko vzniku zranitelností, které vznikají chybami při práci s pamětí, jako je přístup do oblasti paměti po jejím uvolnění a překročení hranice buffera.

Bezpečná práce s pamětí je v Rustu zajištěna během kompilace prostřednictvím kontroly referencí, sledování vlastnictví objektů a zohlednění doby života objektů (š scope), stejně jako odhadem správnosti přístupu k paměti během vykonávání kódu. Rust také poskytuje prostředky na ochranu proti přetečení celých čísel, vyžaduje povinnou inicializaci hodnot proměnných před použitím, lépe zpracovává chyby ve standardní knihovně, aplikuje koncept neměnnosti (immutable) referencí a proměnných jako výchozí a nabízí silnou statickou typizaci pro minimalizaci logických chyb.

V Androidu je bezpečná práce s pamětí zajištěna již podporovanými jazyky Kotlin a Java, ale tyto jazyky nejsou vhodné pro vývoj systémových komponentů kvůli velkým nákladům. Rust umožňuje dosáhnout výkonu blízkého jazykům C a C++, což umožňuje jeho použití pro vývoj nízkoúrovňových částí platformy a komponent pro interakci s hardwarem.

Pro zajištění bezpečnosti kódu v C a C++ na Androidu se používá sandboxová izolace, statická analýza a fuzzingové testování. Možnosti sandboxové izolace jsou omezené a dosáhly vrcholu svých schopností (další dělení na procesy není z pohledu spotřeby zdrojů rozumné). Mezi omezeními použití sandboxu se zmiňuje vysoká režie a nárůst spotřeby paměti způsobený potřebou vytvářet nové procesy, stejně jako výskyt dalších zpoždění spojených s použitím IPC.

Sandbox přitom neodstraňuje zranitelnosti v kódu, pouze snižuje rizika a ztěžuje provedení útoku, jelikož k jeho využití je potřeba identifikace nejen jedné, ale několika zranitelností. Metody založené na testování kódu jsou omezeny tím, že pro odhalení chyb je nutné vytvořit podmínky pro projev problému. Pokrýt všechny možné varianty se nepodaří, a proto mnoho chyb zůstává bez povšimnutí.

Pro systémové procesy v Androidu se společnost Google řídí „pravidlem dvou“, podle něhož jakýkoliv přidaný kód musí splňovat maximálně dvě ze tří podmínek: práce s neověřenými vstupy, použití nezabezpečeného programovacího jazyka (C/C++) a provádění bez tvrdé sandboxové izolace (existence zvýšených oprávnění). Z tohoto pravidla vyplývá, že kód pro zpracování externích dat by měl být buď omezen na minimální oprávnění (izolován), nebo napsán v bezpečném programovacím jazyce.

Google si neklade za cíl přepsat již existující kód C/C++ do Rustu, ale plánuje tento jazyk použít pro vývoj nového kódu. Použití Rustu pro nový kód dává smysl, protože podle statistik většina chyb vyvstává v novém nebo nedávno změněném kódu. Konkrétně asi 50 % odhalovaných chyb v práci s pamětí na Androidu je identifikováno v kódu napsaném méně než před rokem.

Rust byl zařazen mezi hlavní jazyky pro vývoj platformy Android.


Zdroj: opennet.ru
Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster