Izmantojot emuāra ziņu, Google inženieri publicēja pirmo rezultātu kopsavilkumu no ievada Rust attīstības atbalsts operētājsistēmā Android.
Android 13, aptuveni 21% no jaunā koda apkopoti Agregāts ir rakstīts Rust un 79% C/C++, kas ir AOSP (Android Open Source Project) repozitorijs, kas izstrādā Android platformas pirmkodu, kurā ir aptuveni 1,5 miljoni Rust koda rindu.
Kods nodrošina AOSP tas ir saistīts ar jauniem komponentiem, piemēram, Keystore2 kriptogrāfisko atslēgu krātuvi, UWB (Ultra-Wideband) mikroshēmu steksu, DNS protokola ieviešanu, izmantojot HTTP3, AVF virtualizācijas ietvaru (Android virtualizācijas ietvars), eksperimentālos Bluetooth un Wi-Fi skursteņus.
Rindā izmantojot iepriekš pieņemto stratēģiju, lai samazinātu atmiņas kļūdu ievainojamības risku, Līdz šim Rust galvenokārt tika izmantots jauna koda izstrādei un pakāpeniski visneaizsargātāko un svarīgāko programmatūras komponentu drošības stiprināšanai.
Tā kā ir samazinājies jaunu, nedrošu atmiņu kodu skaits, kas tiek ievadīts Android, ir samazinājies arī atmiņas drošības ievainojamību skaits. No 2019. gada līdz 2022. gadam tas samazinājās no 76% līdz 35% no kopējām Android ievainojamībām. 2022. gads ir pirmais gads, kad atmiņas drošības ievainojamības nav saistītas ar lielāko daļu Android ievainojamību.
Vispārējais mērķis visas platformas pārnešanai uz Rust nav uzstādīts, un vecais kods paliek C/C++, un cīņa pret kļūdām tajā notiek, izmantojot izplūdušos testus, statisko analīzi un līdzīgu paņēmienu izmantošanu. MiraclePtr tipa (saistīšana virs neapstrādātām norādēm, kas veic papildu pārbaudes, lai piekļūtu atbrīvotajiem atmiņas apgabaliem), Scudo atmiņas piešķiršanas sistēma (drošs malloc/free aizstājējs) un kļūdu noteikšanas mehānismi, strādājot ar HWAsan (Hardware Assisted AddressSanitizer) atmiņu. , GWP-ASAN un KFENCE.
Attiecībā uz statistiku par būtību ievainojamības Android platformā ir novērojams, ka kā samazina jaunā koda daudzumu, kas nedrošos veidos darbojas ar atmiņu, tas arī samazina ievainojamību skaitu, ko izraisa kļūdas, strādājot ar atmiņu.
Piemēram, atmiņas problēmu izraisīto ievainojamību īpatsvars samazinājās no 76% 2019. gadā līdz 35% 2022. gadā. Absolūtos skaitļos 223. gadā tika konstatētas 2019 ar atmiņu saistītas ievainojamības, 150. gadā – 2020, 100. gadā – 2021 un 85. netika atrasti). 2022. gads bija pirmais gads, kad ar atmiņu saistītās ievainojamības pārstāja dominēt.
Līdz šim Android Rust kodā nav atklātas atmiņas drošības ievainojamības.
Mēs negaidām, ka šis skaitlis mūžīgi paliks nulles līmenī, taču, ņemot vērā jaunā Rust koda apjomu divās Android versijās un drošības jutīgos komponentus, kur tas tiek izmantots, tas ir nozīmīgs rezultāts. Tas parāda, ka Rust pilda paredzēto mērķi, novēršot visizplatītāko Android ievainojamību avotu.
Kopš tā laika ar atmiņu saistītas ievainojamības bieži ir visbīstamākās, kopējā statistika liecina arī par kritisko problēmu un problēmu, kuras var izmantot attālināti, skaita samazināšanos. Tajā pašā laikā ar darbu ar atmiņu nesaistītu ievainojamību atklāšanas dinamika pēdējos 4 gadus ir bijusi aptuveni tādā pašā līmenī - 20 ievainojamības mēnesī.
Arī bīstamo problēmu attiecība pret ievainojamībām, ko izraisa atmiņas kļūdas, ir vienāda (bet, samazinoties ievainojamību skaitam, samazinās arī bīstamo problēmu skaits).
Statistika arī izseko korelāciju starp jaunā koda daudzumu, kas nedrošā veidā strādā ar atmiņu, un ar atmiņu saistīto ievainojamību skaitu (bufera pārpildes, piekļuve jau atbrīvotajai atmiņai utt.).
Šis novērojums apstipriniet pieņēmumu par ka galvenā uzmanība tiek pievērsta drošas programmēšanas tehnikas ieviešana tas ir jāpiešķir jaunajam kodam, nevis jāpārraksta esošais, jo lielākā daļa identificēto ievainojamību ir jaunajā kodā.
Fuente: https://security.googleblog.com/