Prostřednictvím příspěvku na blogu, inženýři Google zveřejnil souhrn prvních výsledků úvodu Podpora vývoje Rust na Androidu.
Android 13, zkompilováno asi 21 % nového kódu Agregát je napsán v Rustu a ze 79 % v C/C++, což je úložiště AOSP (Android Open Source Project), které vyvíjí zdrojový kód pro platformu Android, která má přibližně 1,5 milionu řádků kódu Rust.
Kód poskytuje AOSP souvisí s novými komponentami, jako je kryptografické úložiště klíčů Keystore2, zásobník pro čipy UWB (Ultra-Wideband), implementace protokolu DNS přes HTTP3, virtualizační framework AVF (Android Virtualization Framework), experimentální zásobníky pro Bluetooth a Wi-Fi.
Ve frontě s výše přijatou strategií ke snížení rizika zranitelnosti chyb v paměti, Doposud byl Rust využíván především pro vývoj nového kódu a pro postupné posilování bezpečnosti nejzranitelnějších a životně důležitých softwarových komponent.
S tím, jak se snížil počet nových paměťově nezabezpečených kódů vstupujících do Androidu, se snížil i počet zranitelností v zabezpečení paměti. Od roku 2019 do roku 2022 klesl ze 76 % na 35 % celkových zranitelností Androidu. Rok 2022 je prvním rokem, kdy zranitelnosti zabezpečení paměti nejsou odpovědné za většinu zranitelností systému Android.
Obecný cíl převedení celé platformy na Rust není stanoven a starý kód zůstává v C/C++ a boj proti chybám v něm se provádí pomocí fuzzing testů, statické analýzy a použití podobných technik. použití typu MiraclePtr (vazba přes nezpracované ukazatele, která provádí dodatečné kontroly pro přístup k uvolněným oblastem paměti), systém alokace paměti Scudo (bezpečná náhrada za malloc/free) a mechanismy detekce chyb při práci s pamětí HWAsan (Hardware Assisted AddressSanitizer) , GWP-ASAN a KFENCE.
Pokud jde o statistiky o povaze zranitelnosti na platformě Android bylo zjištěno, že jako snižuje množství nového kódu, který pracuje s pamětí nezabezpečeným způsobem, také snižuje počet zranitelností způsobených chybami při práci s pamětí.
Například podíl zranitelností způsobených problémy s pamětí se snížil ze 76 % v roce 2019 na 35 % v roce 2022. V absolutních číslech bylo v roce 223 identifikováno 2019 zranitelností souvisejících s pamětí, 150 v roce 2020, 100 v roce 2021 a 85 v roce 2022. nebyly nalezeny). Rok 2022 byl prvním rokem, kdy zranitelnosti související s pamětí přestaly dominovat.
K dnešnímu dni nebyly v kódu Android Rust objeveny žádné chyby zabezpečení paměti.
Neočekáváme, že toto číslo zůstane navždy na nule, ale vzhledem k objemu nového kódu Rust ve dvou verzích Androidu a komponentám citlivým na zabezpečení, kde se používá, je to významný výsledek. Ukazuje, že Rust slouží svému zamýšlenému účelu, kterým je předcházení nejčastějšímu zdroji zranitelností Androidu.
Od té doby zranitelnosti související s pamětí jsou často nejnebezpečnějšíCelkové statistiky také ukazují pokles počtu kritických problémů a problémů, které lze zneužít na dálku. Dynamika detekce zranitelností nesouvisejících s prací s pamětí je přitom poslední 4 roky na přibližně stejné úrovni – 20 zranitelností za měsíc.
Poměr nebezpečných problémů k zranitelnostem způsobeným chybami paměti je také stejný (ale jak počet zranitelností klesá, klesá i počet nebezpečných problémů).
Statistiky také sledují korelaci mezi množstvím nového kódu, který pracuje s pamětí nezabezpečeným způsobem, a počtem zranitelností souvisejících s pamětí (přetečení vyrovnávací paměti, přístup k již uvolněné paměti atd.).
Toto pozorování potvrdit předpoklad že hlavní pozornost v implementace technik bezpečného programování měla by být dána novému kódu a nikoli přepisovat stávající, protože většina zjištěných zranitelností je v novém kódu.
zdroj: https://security.googleblog.com/