Android 內存安全漏洞大幅減少,Rust 成為關鍵因素
從 Android 12 開始,Google 就在 Android 系統中帶來了 Rust 語言的支持,作為 C/C++ 的替代方案,他們的目標并不是把現有的 C/C++ 代碼都轉換成為 Rust,而是在新編寫的代碼中使用 Rust 語言開發。
通過將越來越多的 Rust 代碼集成到其 Android 操作系統中,Google 在減少漏洞方面的努力最終是獲得了回報。
Google 在公告中表示,"在過去幾年 / 幾個 Android 系統版本中,內存安全漏洞的數量大幅下降"。
具體而言,2019 年至 2022 年期間,每年的內存安全漏洞數量從最初的 223 個下降到如今的 85 個。內存安全漏洞現在在 Android 系統總漏洞的占比也只有 35%,四年前的占比則是 76%,而且 2022 年也是內存安全漏洞首次不再是 Android 系統漏洞最大占比的一年。
在此期間,進入 Android 系統的新內存不安全代碼的數量也已經減少。
Rust 占了 Android 13 所有新的原生代碼的 21%,在 AOSP 中已經有大約 150 萬行 Rust 代碼,涵蓋各種功能和元件,其中就包括超寬帶(UWB)棧、DNS-over-HTTP3、Keystore2、Android 的虛擬化框架(AVF),以及各種其他組件及其開源依賴。
到目前為止,在整個 Android 12 和 13 系統中,Rust 代碼中發現的內存安全漏洞為零,這是一個重要的發現,因為過去 Android 漏洞密度大于 1/kLOC,也就是說,每一千行代碼至少會發現一個漏洞,基于 Rust 代碼的行數來看,此舉可能已經阻擋了成百上千個漏洞進入 Android 系統。