Około 21% nowego kompilowanego kodu w Androidzie 13 napisano w języku Rust

Inżynierowie z firmy Google przedstawili pierwsze wnioski dotyczące wdrożenia wsparcia dla programowania w języku Rust na platformie Android. W Androidzie 13 około 21% nowego skompilowanego kodu zostało napisane w Rust, a 79% w C/C++. W repozytorium AOSP (Android Open Source Project), w którym rozwijane są źródła platformy Android, znajduje się około 1,5 miliona linii kodu w Rust, związanych z takimi nowymi komponentami, jak magazyn kluczy kryptograficznych Keystore2, sterownik dla chipów UWB (Ultra-Wideband), implementacja protokołu DNS-over-HTTP3, framework wirtualizacji AVF (Android Virtualization Framework) oraz eksperymentalne sterowniki dla Bluetooth i Wi-Fi.

Około 21% nowego kompilowanego kodu w Androidzie 13 napisano w języku Rust

Zgodnie z wcześniej przyjętą strategią zmniejszenia ryzyka pojawiania się luk w zabezpieczeniach spowodowanych błędami w zarządzaniu pamięcią, język Rust jest obecnie stosowany głównie przy tworzeniu nowego kodu oraz do stopniowego poprawiania bezpieczeństwa najbardziej narażonych i kluczowych komponentów oprogramowania. Nie ma ogólnego celu przetłumaczenia całej platformy na Rust, a stary kod pozostaje w C/C++, natomiast walka z błędami w nim prowadzona jest za pomocą testów fuzzingowych, analizy statycznej oraz technik programistycznych, takich jak MiraclePtr (oprawa nad surowymi wskaźnikami, wykonująca dodatkowe kontrole dostępu do zwolnionych obszarów pamięci), system zarządzania pamięcią Scudo (bezpieczna alternatywa dla malloc/free) oraz mechanizmy wykrywania błędów w zarządzaniu pamięcią HWAsan (sprzętowy AddressSanitizer), GWP-ASAN i KFENCE.

Jeśli chodzi o statystyki dotyczące charakteru luk w zabezpieczeniach na platformie Android, zauważono, że w miarę zmniejszania się nowego kodu, niebezpiecznie działającego z pamięcią, obserwuje się również spadek liczby luk spowodowanych błędami w tym zakresie. Na przykład odsetek luk spowodowanych problemami z pamięcią zmniejszył się z 76% w 2019 roku do 35% w 2022 roku. W liczbach bezwzględnych w 2019 roku wykryto 223 luki związane z zarządzaniem pamięcią, w 2020 roku – 150, w 2021 roku – 100, a w 2022 roku – 85 (wszystkie wykryte luki dotyczyły kodu w C/C++, w kodzie w Rust podobnych problemów dotychczas nie znaleziono). Rok 2022 był pierwszym rokiem, w którym luki związane z pamięcią przestały dominować.

Około 21% nowego kompilowanego kodu w Androidzie 13 napisano w języku Rust

Ponieważ luki związane z zarządzaniem pamięcią są zazwyczaj najbardziej niebezpieczne, w ogólnej statystyce zauważa się również spadek liczby krytycznych problemów oraz problemów, które mogą być eksploatowane zdalnie. W tym samym czasie dynamika wykrywania luk niezwiązanych z zarządzaniem pamięcią przez ostatnie 4 lata pozostaje na mniej więcej tym samym poziomie — 20 luk miesięcznie. Utrzymuje się również udział niebezpiecznych problemów wśród luk spowodowanych błędami w zarządzaniu pamięcią (jednakże z uwagi na zmniejszenie liczby takich luk, zmniejsza się także liczba niebezpiecznych problemów).

Około 21% nowego kompilowanego kodu w Androidzie 13 napisano w języku Rust

Statystyki także śledzą korelację pomiędzy objętością nowego kodu, który niebezpiecznie operuje na pamięci, a liczbą luk związanych z pamięcią (przepełnienie bufora, dostęp do już zwolnionej pamięci itp.). To spostrzeżenie potwierdza założenie, że główny nacisk przy wdrażaniu technik bezpiecznego programowania powinien być kładziony na nowy kod, a nie na przepisywanie istniejącego, ponieważ większość wykrywanych luk dotyczy nowego kodu.

Około 21% nowego kompilowanego kodu w Androidzie 13 napisano w języku Rust


Źródło: opennet.ru
Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster