Kroz post na blogu, Googleovi inženjeri objavio je sažetak prvih rezultata uvoda Podrška za razvoj Rusta na Androidu.
Android 13, kompajlirano oko 21% novog koda Agregat je napisan u Rustu i 79% u C/C++, što je AOSP (Android Open Source Project) repozitorij, koji razvija izvorni kod za Android platformu, koja ima približno 1,5 milijuna redaka Rust koda.
Kod pruža AOSP odnosi se na nove komponente kao što su Keystore2 kriptografsko spremište ključeva, stog za UWB (Ultra-Wideband) čipove, implementacija DNS protokola preko HTTP3, AVF virtualizacijski okvir (Android Virtualization Framework), eksperimentalni nizovi za Bluetooth i Wi-Fi.
U redu s gore usvojenom strategijom za smanjenje rizika od ranjivosti memorijskih pogrešaka, Do sada se Rust uglavnom koristio za razvoj novog koda i za postupno jačanje sigurnosti najranjivijih i vitalnih komponenti softvera.
Kako se smanjio broj novih memorijsko nesigurnih kodova koji ulaze u Android, smanjio se i broj sigurnosnih propusta u memoriji. Od 2019. do 2022. pao je sa 76% na 35% ukupnih ranjivosti Androida. 2022. označava prvu godinu u kojoj sigurnosne ranjivosti memorije ne predstavljaju većinu ranjivosti Androida.
Generalni cilj prebacivanja cijele platforme na Rust nije postavljen, te stari kod ostaje u C/C++, a borba protiv bugova u njemu se vrši pomoću fuzzing testova, statičke analize i korištenja sličnih tehnika. korištenje tipa MiraclePtr (vezivanje preko sirovih pokazivača, koji obavlja dodatne provjere za pristup oslobođenim memorijskim područjima), Scudo sustav dodjele memorije (sigurna zamjena za malloc/free) i mehanizama za otkrivanje grešaka pri radu s HWAsan (Hardware Assisted AddressSanitizer) memorijom , GWP-ASAN i KFENCE.
Što se tiče statistike o prirodi ranjivosti na Android platformi, uočeno je da as smanjuje količinu novog koda koji radi s memorijom na nesigurne načine, također smanjuje broj ranjivosti uzrokovanih pogreškama pri radu s memorijom.
Na primjer, udio ranjivosti uzrokovanih problemima s memorijom smanjio se sa 76% u 2019. na 35% u 2022. U apsolutnim brojevima, 223 ranjivosti povezane s memorijom identificirane su 2019., 150 2020., 100 2021. i 85 2022. godine. nisu pronađeni). 2022. bila je prva godina u kojoj su ranjivosti povezane s memorijom prestale dominirati.
Do danas nisu otkrivene sigurnosne ranjivosti memorije u Android Rust kodu.
Ne očekujemo da će taj broj zauvijek ostati na nuli, ali s obzirom na količinu novog Rust koda u dvije verzije Androida i sigurnosno osjetljive komponente gdje se koristi, to je značajan rezultat. To pokazuje da Rust služi predviđenoj svrsi sprječavanja najčešćeg izvora ranjivosti Androida.
S obzirom da ranjivosti povezane s pamćenjem često su najopasnije, ukupna statistika također pokazuje smanjenje broja kritičnih problema i problema koji se mogu iskoristiti na daljinu. Istodobno, dinamika otkrivanja ranjivosti koje nisu povezane s radom s memorijom bila je na približno istoj razini zadnje 4 godine - 20 ranjivosti mjesečno.
Omjer opasnih problema i ranjivosti uzrokovanih greškama u memoriji također je isti (ali kako se smanjuje broj ranjivosti, smanjuje se i broj opasnih problema).
Statistika također prati korelaciju između količine novog koda koji radi s memorijom na nesiguran način i broja ranjivosti povezanih s memorijom (preljevi međuspremnika, pristup već oslobođenoj memoriji itd.).
Ovo zapažanje potvrditi pretpostavku o da je glavna pozornost u implementacija tehnika sigurnog programiranja treba ga dati novom kodu, a ne prepisivati postojeći, budući da se većina identificiranih ranjivosti nalazi u novom kodu.
izvor: https://security.googleblog.com/