去年,谷歌將 Rust 作爲安卓開源項目(AOSP)中新代碼的默認代碼,這一舉措似乎正在得到回報,谷歌稱安卓系統中的內存安全漏洞已經減少了一半以上。

谷歌表示,“在過去幾年 / 版本中,內存安全漏洞的數量大幅下降”。具體而言,2019 年至 2022 年期間,每年的內存安全漏洞數量從 223 個下降到 85 個。內存安全漏洞現在是安卓系統總漏洞的 35%,而四年前是 76%。事實上,“2022 年是內存安全漏洞不佔安卓系統漏洞的大多數的第一年”。

安卓 13 是第一個在其中加入的大部分新代碼都是使用內存安全語言的安卓版本,在這個版本中,Rust 語言佔了所有新的本地代碼的 21%,包括超寬帶(UWB)堆棧、DNS-over-HTTP3、Keystore2、安卓的虛擬化框架(AVF),以及“各種其它組件及其開源依賴”。

IT之家瞭解到,除了 Rust,谷歌用於安卓的其它內存安全語言包括 Java 和與 Java 兼容的 Kotlin。C 和 C++ 仍然是 AOSP 中的主流語言,但安卓 13 是第一個大部分新代碼來自內存安全語言的版本。

安卓安全軟件工程師 Jeffrey Vander Stoep 指出,安卓團隊計劃加強對 Rust 的使用,儘管沒有計劃在系統編程中徹底棄用 C 和 C++。他在一條推文中指出:“Rust 並不能解決所有問題,在某些領域,C / C++ 將繼續是最實用的開發選擇,至少在一段時間內是這樣。”他還稱,“我們將努力隨着時間的推移減少這種情況,同時繼續擴大我們的 Rust 使用規模,並繼續投資和部署對 C / C++ 的改進。”

Vander Stoep 指出,相關性並不等同於因果關係,但內存安全漏洞的百分比確實與新代碼使用的語言密切相關。

他繼續指出,在安卓 13 中,共有 150 萬行 Rust 代碼,約佔所有新代碼的 21%。到目前爲止,谷歌還沒有在安卓的 Rust 代碼中發現任何內存安全漏洞。Vander Stoep 指出,“這表明,Rust 正在實現其預期的目的,即防止出現 Android 最常見的漏洞。在安卓的許多 C / C++ 組件(如媒體、藍牙、NFC 等)中,歷史漏洞密度大於 1 / kLOC(每千行代碼有一個漏洞)。根據這一歷史漏洞密度,使用 Rust 很可能已經防止了數百個漏洞的產生。”

谷歌認爲擺脫 C / C++ 是一個挑戰,但正在爲安卓系統推進該項目。然而,其並沒有在 Chrome 上使用 Rust 語言。

據悉,Rust 是一門系統編程語言,專注於安全,尤其是併發安全,支持函數式和命令式以及泛型等編程範式的多範式語言。Rust 在語法上和 C++ 類似,但是設計者想要在保證性能的同時提供更好的內存安全。

相關文章