Близько 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 Address Sanitizer), 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

Додати коментар або відгук