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

Google oznámil zařazení programovacího jazyka Rust mezi jazyky povolené pro vývoj platformy Android. Kompilátor jazyka Rust byl zahrnut do zdrojového stromu Androidu v roce 2019, ale podpora tohoto jazyka zůstala experimentální. Některé z prvních komponent Rust plánovaných pro Android zahrnují nové implementace meziprocesového komunikačního mechanismu Binder a Bluetooth stack.

Zavedení Rustu bylo provedeno v rámci projektu na posílení bezpečnosti, podporu bezpečných programovacích technik a zvýšení efektivity identifikace problémů při práci s pamětí v Androidu. Je třeba poznamenat, že asi 70 % všech nebezpečných zranitelností zjištěných v systému Android je způsobeno chybami při práci s pamětí. Použití Rust, který se zaměřuje na bezpečnost paměti a automatickou správu paměti, sníží riziko zranitelnosti způsobených chybami paměti, jako je přístup po volném čase a přetečení vyrovnávací paměti.

Rust prosazuje bezpečnost paměti v době kompilace prostřednictvím kontroly referencí, vlastnictví objektů a sledování životnosti objektů (rozsahy) a vyhodnocováním správnosti přístupů do paměti za běhu. Rust také poskytuje ochranu proti přetečení celých čísel, vyžaduje, aby hodnoty proměnných byly před použitím inicializovány, má lepší zpracování chyb ve standardní knihovně, standardně používá koncept neměnných referencí a proměnných a nabízí silné statické typování pro minimalizaci logických chyb.

V Androidu je bezpečnost paměti poskytována v již podporovaných jazycích Kotlin a Java, ale kvůli vysoké režii nejsou vhodné pro vývoj systémových komponent. 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.

K zajištění bezpečnosti kódu C a C++ používá Android izolaci izolovaného prostoru, statickou analýzu a fuzzing testování. Schopnosti izolace sandboxu jsou omezené a dosáhly hranice svých možností (další fragmentace do procesů je z hlediska spotřeby zdrojů nepraktická). Omezení používání sandboxu zahrnují vysoké režijní náklady a zvýšenou spotřebu paměti způsobenou potřebou vytvářet nové procesy, stejně jako další zpoždění spojená s používáním IPC.

Sandbox zároveň neodstraňuje zranitelnosti v kódu, ale pouze snižuje rizika a komplikuje útok, protože zneužití vyžaduje identifikaci ne jedné, ale několika zranitelností. Metody založené na testování kódu jsou omezené v tom, že pro identifikaci chyb je nutné vytvořit podmínky pro to, aby se problém projevil. Není možné pokrýt všechny možné možnosti, takže mnoho chyb zůstane bez povšimnutí.

U systémových procesů v Androidu se Google řídí „pravidlem dvou“, podle kterého jakýkoli přidaný kód nesmí splňovat více než dvě ze tří podmínek: práce s neověřenými vstupními daty, používání nebezpečného programovacího jazyka (C/C++) a běží bez přísné izolace sandboxu (se zvýšenými oprávněními). Toto pravidlo znamená, že kód pro zpracování externích dat musí být buď omezen na minimální oprávnění (izolován), nebo napsán v zabezpečeném programovacím jazyce.

Google si neklade za cíl přepsat stávající kód C/C++ v Rustu, ale plánuje použít tento jazyk k vývoji nového kódu. Pro nový kód má smysl používat Rust, protože statisticky se většina chyb objevuje v novém nebo nedávno změněném kódu. Konkrétně asi 50 % zjištěných chyb paměti v Androidu je detekováno v kódu napsaném před méně než rokem.

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


Zdroj: opennet.ru

Přidat komentář