Каля 21% новага кампіляванага кода ў Android 13 напісана на мове Rust

Інжынеры з кампаніі Google падвялі першыя вынікі ўкаранення ў платформу Android падтрымкі распрацоўкі на мове Rust. У Android 13 прыкладна 21% ад дададзенага новага кампіляванага кода напісана на Rust, а 79% на C/C++. У рэпазітары AOSP (Android Open Source Project), у якім развіваюцца зыходныя тэксты платформы Android, налічваецца прыкладна 1.5 млн радкоў кода на Rust, злучанага з такімі новымі кампанентам, як сховішча крыптаграфічных ключоў Keystore2, стэк для UWB-чыпаў (Ultra-Wideband), рэалізацыя пратаколу DNS-over-HTTP3, фрэймворк віртуалізацыі AVF (Android Virtualization Framework), эксперыментальныя стэкі для Bluetooth і Wi-Fi.

Каля 21% новага кампіляванага кода ў Android 13 напісана на мове Rust

У адпаведнасці з раней прынятай стратэгіяй зніжэння рызыкі з'яўлення ўразлівасцяў, выкліканых памылкамі пры працы з памяццю, мова Rust пакуль ужываецца галоўным чынам пры распрацоўцы новага кода і для паступовага ўзмацнення бяспекі найболей неабароненых і жыццёва важных праграмных кампанентаў. Агульнай мэты перакладу ўсёй платформы на Rust не ставіцца і стары код застаецца на C/C++,а дужанне з памылкамі ў ім вырабляецца праз ужыванне fuzzing-тэставанні, статычнага аналізу і ўжыванне пры распрацоўцы тэхнік, падобных задзейнічанню тыпу MiraclePtr (абвязка над raw-паказальнікамі, якая выконвае дадатковыя праверкі звароту да вызваленых абласцей памяці), сістэме размеркавання памяці Scudo (бяспечная замена malloc/free) і механізмам выяўлення памылак пры працы з памяццю HWAsan (Hardware-assisted AddressSanitizer), GWP-ASAN і KFENCE.

Што да статыстыкі па характары ўразлівасцяў у платформе Android, адзначаецца, што па меры памяншэння новага кода, небяспечна працавальнага з памяццю, назіраецца і паніжэнне колькасці ўразлівасцяў, выкліканых памылкамі пры працы з памяццю. Напрыклад, доля выкліканых праблемамі з памяццю ўразлівасцяў скарацілася з 76% у 2019 годзе да 35% у 2022 годзе. У абсалютных ліках у 2019 годзе было выяўлена 223 уразлівасцяў, злучаных з працай з памяццю, у 2020 - 150, у 2021 - 100, а ў 2022 - 85 (усе адзначаныя ўразлівасці ў кодзе на C/C++, у кодзе на Rust не было знойдзена). 2022 год стаў першым годам, у якім звязаныя з памяццю ўразлівасці перасталі дамінаваць.

Каля 21% новага кампіляванага кода ў Android 13 напісана на мове Rust

Паколькі звязаныя з працай з памяццю ўразлівасці звычайна з'яўляюцца найбольш небяспечнымі, у агульнай статыстыцы таксама адзначаецца зніжэнне колькасці крытычных праблем і праблем, якія могуць быць эксплуатаваны выдалена. Пры гэтым дынаміка выяўлення ўразлівасцяў не звязаных з працай з памяццю, апошнія 4 гады захоўваецца прыкладна на адным узроўні - 20 уразлівасцяў у месяц. Таксама захоўваецца і доля небяспечных праблем сярод узямасцяў, выкліканых памылкамі пры працы з памяццю (але бо змяншаецца лік падобных уразлівасцяў, змяншаецца і лік небяспечных праблем).

Каля 21% новага кампіляванага кода ў Android 13 напісана на мове Rust

У статыстыцы таксама адсочваецца карэляцыя паміж аб'ёмам новага кода, які небяспечна працуе з памяццю, і лікам уразлівасцяў, звязаных з памяццю (перапаўненне буфера, зварот да ўжо вызваленай памяці і да т.п.). Дадзенае назіранне пацвярджае здагадку, што асноўная ўвага пры ўкараненні тэхнік бяспечнага праграмавання варта выдаляць новаму коду, а не перапісванню існага, бо асноўная маса выяўленых уразлівасцяў прыходзіцца на новы код.

Каля 21% новага кампіляванага кода ў Android 13 напісана на мове Rust


Крыніца: opennet.ru

Дадаць каментар