Ĉirkaŭ 21% de la nova kompilita kodo en Android 13 estas skribita en Rust

Inĝenieroj de Guglo resumis la unuajn rezultojn de enkonduko de subteno por evoluo en la Rust-lingvo en la Android-platformon. En Android 13, proksimume 21% de la nova kompilita kodo aldonita estas skribita en Rust, kaj 79% en C/C++. La deponejo AOSP (Android Open Source Project), kiu evoluigas la fontkodon de la Android-platformo, enhavas proksimume 1.5 milionojn da linioj de Rust-kodo asociitaj kun tiaj novaj komponentoj kiel la kriptografa ŝlosilbutiko Keystore2, stako por UWB-fritoj (Ultra-Wideband). , efektivigo de la DNS-super-HTTP3-protokolo, la kadro de virtualigo AVF (Android Virtualization Framework), eksperimentaj stakoj por Bluetooth kaj Wi-Fi.

Ĉirkaŭ 21% de la nova kompilita kodo en Android 13 estas skribita en Rust

Konforme al la antaŭe adoptita strategio redukti la riskon de vundeblecoj kaŭzitaj de eraroj en laborado kun memoro, la Rust-lingvo nuntempe estas uzata ĉefe en la disvolviĝo de nova kodo kaj por iom post iom plifortigi la sekurecon de la plej vundeblaj kaj esencaj programaj komponantoj. Ne estas ĝenerala celo translokigi la tutan platformon al Rust kaj la malnova kodo restas en C/C++, kaj la batalo kontraŭ eraroj en ĝi estas efektivigita per la uzo de fuzz-testado, statika analizo kaj la uzo en evoluo de teknikoj similaj al. uzante la MiraclePtr-specon (ligante super krudaj montriloj, farante pliajn kontrolojn por aliro al liberigitaj memorareoj), la Scudo-memoro-asigna sistemo (sekura anstataŭaĵo por malloc/libera) kaj erardetektaj mekanismoj kiam oni laboras kun memoro HWAsan (Hardware-helpita AddressSanitizer), GWP-ASAN kaj KFENCE.

Koncerne statistikojn pri la naturo de vundeblecoj en la Android-platformo, oni rimarkas, ke kiam nova kodo, kiu funkcias nesekure kun memoro malpliiĝas, estas malpliiĝo de la nombro da vundeblecoj kaŭzitaj de eraroj kiam oni laboras kun memoro. Ekzemple, la parto de vundeblecoj kaŭzitaj de memorproblemoj malpliiĝis de 76% en 2019 al 35% en 2022. En absolutaj nombroj, 2019 memor-rilataj vundeblecoj estis identigitaj en 223, 2020 en 150, 2021 en 100, kaj 2022 en 85 (ĉiuj notitaj vundeblecoj estis en C/C++-kodo; en Rust-kodo, ne ekzistas similaj problemoj ĝis nun ne estis. trovita). 2022 estis la unua jaro en kiu memor-rilataj vundeblecoj ĉesis regi.

Ĉirkaŭ 21% de la nova kompilita kodo en Android 13 estas skribita en Rust

Ĉar memor-rilataj vundeblecoj estas kutime la plej danĝeraj, la ĝeneralaj statistikoj ankaŭ montras malpliiĝon de la nombro da kritikaj aferoj kaj aferoj, kiuj povas esti ekspluatitaj malproksime. Samtempe, la dinamiko de identigado de vundeblecoj ne rilataj al laboro kun memoro restis proksimume sur la sama nivelo dum la lastaj 4 jaroj - 20 vundeblecoj monate. La parto de danĝeraj problemoj inter vundeblecoj kaŭzitaj de eraroj dum laboro kun memoro ankaŭ restas (sed ĉar la nombro de tiaj vundeblecoj malpliiĝas, la nombro de danĝeraj problemoj ankaŭ malpliiĝas).

Ĉirkaŭ 21% de la nova kompilita kodo en Android 13 estas skribita en Rust

La statistiko ankaŭ spuras la korelacion inter la kvanto de nova kodo, kiu funkcias nesekure kun memoro, kaj la nombro da memor-rilataj vundeblecoj (buffersuperfluoj, aliro al jam liberigita memoro, ktp.). Ĉi tiu observado konfirmas la supozon ke la ĉefa fokuso dum efektivigado de sekuraj programaj teknikoj devus esti forigi novan kodon, prefere ol reverki ekzistantan kodon, ĉar la plejparto de identigitaj vundeblecoj estas en nova kodo.

Ĉirkaŭ 21% de la nova kompilita kodo en Android 13 estas skribita en Rust


fonto: opennet.ru

Aldoni komenton