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