Android 21 中大約 13% 的新編譯程式碼是用 Rust 寫的

Google 的工程師總結了將 Rust 語言開發支援引入 Android 平台的初步成果。 在 Android 13 中,大約 21% 的新加入的編譯程式碼是用 Rust 寫的,79% 是用 C/C++ 寫的。 開發 Android 平台原始碼的 AOSP(Android 開源專案)儲存庫包含約 1.5 萬行 Rust 程式碼,與 Keystore2 加密金鑰儲存、UWB 晶片(超寬頻)堆疊等新元件相關。 、DNS-over-HTTP3 協定的實現、AVF(Android Virtualization Framework)虛擬化框架、藍牙和Wi-Fi 實驗堆疊。

Android 21 中大約 13% 的新編譯程式碼是用 Rust 寫的

依照先前採取的減少因記憶體操作錯誤而導致漏洞風險的策略,Rust語言目前主要用於新程式碼的開發,並逐步加強最脆弱和最重要的軟體元件的安全性。 沒有將整個平台轉移到 Rust 的總體目標,舊程式碼仍然保留在 C/C++ 中,並且透過使用模糊測試、靜態分析以及在開發中使用類似的技術來對抗其中的錯誤。使用MiraclePtr 類型(綁定原始指針,對存取已釋放記憶體區域執行額外檢查)、Scudo 記憶體分配系統(malloc/free 的安全替代品)以及使用記憶體HWAsan(硬體輔助AddressSanitizer)時的錯誤偵測機制, GWP-ASAN 和 KFENCE。

至於Android平台漏洞性質的統計,值得注意的是,隨著不安全地使用記憶體的新程式碼的減少,因使用記憶體時的錯誤而導致的漏洞數量也在減少。 例如,記憶體問題造成的漏洞比例從 76 年的 2019% 下降到 35 年的 2022%。 從絕對數量來看,2019 年發現了223 個與記憶體相關的漏洞,2020 年發現了150 個,2021 年發現了100 個,2022 年發現了85 個(所有註意到的漏洞都在C/C++ 程式碼中;在Rust 程式碼中,到目前為止還沒有類似的問題)成立)。 2022 年是記憶體相關漏洞不再占主導地位的第一年。

Android 21 中大約 13% 的新編譯程式碼是用 Rust 寫的

由於與記憶體相關的漏洞通常是最危險的,因此總體統計資料也顯示關鍵問題和可遠端利用的問題數量減少。 同時,在過去 4 年裡,識別與記憶體工作無關的漏洞的動態保持在大致相同的水平 - 每月 20 個漏洞。 由於使用記憶體時的錯誤導致的漏洞中危險問題的比例仍然存在(但由於此類漏洞的數量減少,危險問題的數量也減少)。

Android 21 中大約 13% 的新編譯程式碼是用 Rust 寫的

統計數據還追蹤不安全地使用記憶體的新程式碼數量與記憶體相關漏洞(緩衝區溢位、存取已釋放記憶體等)數量之間的相關性。 這項觀察證實了這樣的假設:實施安全程式設計技術時的重點應該是刪除新程式碼而不是重寫現有程式碼,因為大部分已識別的漏洞都在新程式碼中。

Android 21 中大約 13% 的新編譯程式碼是用 Rust 寫的


來源: opennet.ru

添加評論