Inžinieri spoločnosti Google zhrnuli prvé výsledky implementácie podpory vývoja v jazyku Rust na platforme Android. V Android 13 približne 21 % z nového pridávaného kompilovateľného kódu je napísaného v Rust, zatiaľ čo 79 % v C/C++. V repozitári AOSP (Android Open Source Project), kde sa rozvíjajú zdrojové texty platformy Android, sa nachádza približne 1,5 milióna riadkov kódu v Rust súvisiaceho s novými komponentmi, ako sú úložisko kryptografických kľúčov Keystore2, zásobník pre UWB čipy (Ultra-Wideband), implementácia protokolu DNS-over-HTTP3, rámec virtualizácie AVF (Android Virtualization Framework) a experimentálne zásobníky pre Bluetooth a Wi-Fi.

V súlade s predtým prijatou stratégiou zníženia rizika vzniku zraniteľností spôsobených chybami pri práci s pamäťou, sa jazyk Rust zatiaľ používa najmä pri vývoji nového kódu a na postupné posilňovanie bezpečnosti najzraniteľnejších a životne dôležitých softvérových komponentov. Celkový cieľ previesť celú platformu na Rust nie je stanovený a starý kód ostáva na C/C++, pričom boj s chybami v ňom sa uskutočňuje prostredníctvom fuzzing testovania, statickej analýzy a techník vývoja podobných typu MiraclePtr (zábal nad raw ukazovateľmi, ktorý vykonáva dodatočné kontroly prístupu k uvoľneným oblastiam pamäte), systému rozdeľovania pamäte Scudo (bezpečná náhrada malloc/free) a mechanizmov na odhaľovanie chýb pri práci s pamäťou HWAsan (Hardware-assisted AddressSanitizer), GWP-ASAN a KFENCE.
Pokiaľ ide o štatistiku týkajúcu sa povahy zraniteľností na platforme Android, zaznamenáva sa, že s poklesom nového kódu, ktorý nebezpečne pracuje s pamäťou, dochádza aj k poklesu počtu zraniteľností spôsobených chybami pri práci s pamäťou. Napríklad podiel zraniteľností vyvolaných problémami s pamäťou klesol z 76 % v roku 2019 na 35 % v roku 2022. V absolútnych číslach bolo v roku 2019 identifikovaných 223 zraniteľností súvisiacich s prácou s pamäťou, v roku 2020 — 150, v roku 2021 — 100, a v roku 2022 — 85 (všetky uvedené zraniteľnosti v kóde na C/C++, v kóde na Rust zatiaľ neboli nájdené podobné problémy). Rok 2022 sa stal prvým rokom, v ktorom súvisiace s pamäťou zraniteľnosti prestali dominovať.

Keďže zraniteľnosti súvisiace s pamäťou sú zvyčajne najnebezpečnejšie, celková štatistika tiež zaznamenáva pokles počtu kritických problémov a problémov, ktoré môžu byť zneužité vzdialene. Počas posledných 4 rokov sa dynamika identifikácie zraniteľností nesúvisiacich s pamäťou udržiava na približne rovnakej úrovni – 20 zraniteľností mesačne. Rovnako sa zachováva aj podiel nebezpečných problémov medzi zraniteľnosťami spôsobenými chybami pri práci s pamäťou (ale keďže klesá počet takýchto zraniteľností, klesá aj počet nebezpečných problémov).

V štatistike sa tiež sleduje korelácia medzi objemom nového kódu, ktorý neprezreteľne pracuje s pamäťou, a počtom zraniteľností súvisiacich s pamäťou (preplnenie zásobníka, prístup k už uvoľnenej pamäti atď.). Toto pozorovanie potvrdzuje predpoklad, že primárna pozornosť pri zavádzaní techník bezpečného programovania by sa mala venovať novému kódu, nie prerábaniu existujúceho, pretože väčšina zisťovaných zraniteľností sa týka nového kódu.

Zdroj: opennet.ru
