Humigit-kumulang 21% ng bagong compiled code sa Android 13 ay nakasulat sa Rust

Binubuo ng mga inhinyero mula sa Google ang mga unang resulta ng pagpapakilala ng suporta para sa pagpapaunlad sa wikang Rust sa Android platform. Sa Android 13, humigit-kumulang 21% ng bagong compiled code na idinagdag ay nakasulat sa Rust, at 79% sa C/C++. Ang repositoryo ng AOSP (Android Open Source Project), na bumubuo ng source code ng Android platform, ay naglalaman ng humigit-kumulang 1.5 milyong linya ng Rust code na nauugnay sa mga bagong bahagi gaya ng Keystore2 cryptographic key store, isang stack para sa UWB chips (Ultra-Wideband) , pagpapatupad ng DNS-over-HTTP3 protocol, ang AVF (Android Virtualization Framework) virtualization framework, mga pang-eksperimentong stack para sa Bluetooth at Wi-Fi.

Humigit-kumulang 21% ng bagong compiled code sa Android 13 ay nakasulat sa Rust

Alinsunod sa naunang pinagtibay na diskarte sa pagbabawas ng panganib ng mga kahinaan na dulot ng mga error sa pagtatrabaho sa memorya, ang Rust na wika ay kasalukuyang ginagamit pangunahin sa pagbuo ng bagong code at upang unti-unting palakasin ang seguridad ng mga pinaka-mahina at mahahalagang bahagi ng software. Walang pangkalahatang layunin na ilipat ang buong platform sa Rust at ang lumang code ay nananatili sa C/C++, at ang paglaban sa mga error dito ay isinasagawa sa pamamagitan ng paggamit ng fuzzing testing, static analysis at paggamit sa pagbuo ng mga technique na katulad ng gamit ang uri ng MiraclePtr (nagbubuklod sa mga hilaw na pointer, nagsasagawa ng mga karagdagang pagsusuri para sa pag-access sa mga libreng lugar ng memorya), ang Scudo memory allocation system (isang ligtas na kapalit para sa malloc/libre) at mga mekanismo ng pagtuklas ng error kapag nagtatrabaho sa memory HWAsan (Hardware-assisted AddressSanitizer), GWP-ASAN at KFENCE.

Tulad ng para sa mga istatistika sa likas na katangian ng mga kahinaan sa platform ng Android, nabanggit na habang ang bagong code na gumagana nang hindi ligtas sa memorya ay bumababa, mayroong pagbaba sa bilang ng mga kahinaan na dulot ng mga error kapag nagtatrabaho sa memorya. Halimbawa, ang bahagi ng mga kahinaan na dulot ng mga problema sa memorya ay bumaba mula 76% noong 2019 hanggang 35% noong 2022. Sa ganap na mga numero, 2019 mga kahinaan na nauugnay sa memorya ang natukoy noong 223, 2020 noong 150, 2021 noong 100, at 2022 noong 85 (lahat ng nabanggit na mga kahinaan ay nasa C/C++ code; sa Rust code, wala pang katulad na mga problema sa ngayon ay wala pa. natagpuan). Ang 2022 ay ang unang taon kung saan ang mga kahinaan na nauugnay sa memorya ay tumigil sa pangingibabaw.

Humigit-kumulang 21% ng bagong compiled code sa Android 13 ay nakasulat sa Rust

Dahil ang mga kahinaan na nauugnay sa memorya ay kadalasang pinakamapanganib, ang pangkalahatang istatistika ay nagpapakita rin ng pagbaba sa bilang ng mga kritikal na isyu at isyu na maaaring mapagsamantalahan nang malayuan. Kasabay nito, ang dynamics ng pagtukoy ng mga kahinaan na hindi nauugnay sa pagtatrabaho sa memorya ay nanatili sa humigit-kumulang sa parehong antas para sa huling 4 na taon - 20 mga kahinaan bawat buwan. Ang bahagi ng mga mapanganib na problema sa mga kahinaan na dulot ng mga error kapag nagtatrabaho sa memorya ay nananatili rin (ngunit dahil ang bilang ng mga naturang kahinaan ay bumababa, ang bilang ng mga mapanganib na problema ay bumababa din).

Humigit-kumulang 21% ng bagong compiled code sa Android 13 ay nakasulat sa Rust

Sinusubaybayan din ng mga istatistika ang ugnayan sa pagitan ng dami ng bagong code na hindi ligtas na gumagana sa memorya at ang bilang ng mga kahinaan na nauugnay sa memorya (buffer overflows, access sa nakalaya na memorya, atbp.). Kinukumpirma ng obserbasyon na ito ang pagpapalagay na ang pagtutuon kapag nagpapatupad ng mga secure na diskarte sa programming ay dapat na sa pag-alis ng bagong code sa halip na muling pagsulat ng umiiral na code, dahil ang karamihan sa mga natukoy na kahinaan ay nasa bagong code.

Humigit-kumulang 21% ng bagong compiled code sa Android 13 ay nakasulat sa Rust


Pinagmulan: opennet.ru

Magdagdag ng komento