谷歌稱用 Rust編寫(xiě)代碼,五年漏洞數(shù)下降了68%
從 Android 12 開(kāi)始,Google 就在 Android 系統(tǒng)中帶來(lái)了 Rust 語(yǔ)言的支持,作為 C/C++ 的替代方案,他們的目標(biāo)并不是把現(xiàn)有的 C/C++ 代碼都轉(zhuǎn)換成為 Rust,而是在新編寫(xiě)的代碼中使用 Rust 語(yǔ)言開(kāi)發(fā)。 通過(guò)將越來(lái)越多的 Rust 代碼集成到其 Android 操作系統(tǒng)中,Google 在減少漏洞方面的努力最終是獲得了回報(bào)。

根據(jù)谷歌發(fā)布的最新公告:在過(guò)去五年的Android 系統(tǒng)版本中,內(nèi)存安全漏洞的數(shù)量大幅下降了68%。這遠(yuǎn)遠(yuǎn)低于之前在 Chromium 中發(fā)現(xiàn)的 70%,使安卓成為大型項(xiàng)目如何在不破壞向后兼容性的情況下逐步、有條不紊地轉(zhuǎn)向安全領(lǐng)域的絕佳范例。
谷歌表示,實(shí)現(xiàn)這一結(jié)果的方法是優(yōu)先使用 Rust 等內(nèi)存安全語(yǔ)言編寫(xiě)新代碼,從而隨著時(shí)間的推移最大限度地減少新漏洞的引入。與此同時(shí),對(duì)舊代碼也進(jìn)行了最小限度的修改,重點(diǎn)放在重要的安全修復(fù)上,而不是進(jìn)行大范圍的重寫(xiě),因?yàn)橹貙?xiě)也會(huì)破壞互操作性。
谷歌在報(bào)告中寫(xiě)道:根據(jù)我們所了解到的情況,很明顯,我們不需要丟棄或重寫(xiě)所有現(xiàn)有的內(nèi)存不安全代碼。相反,Android 正專注于將互操作性的安全和便捷作為我們內(nèi)存安全之旅的主要能力。

多年來(lái)的安卓?jī)?nèi)存安全,資料來(lái)源:谷歌
隨著時(shí)間的推移,這種策略會(huì)使舊代碼變得更加成熟和安全,從而減少與內(nèi)存相關(guān)的漏洞數(shù)量,無(wú)論這些漏洞是用哪種語(yǔ)言編寫(xiě)的。
Android 構(gòu)建策略中的這兩大支柱產(chǎn)生了協(xié)同效應(yīng),使世界上使用最廣泛的移動(dòng)平臺(tái)的內(nèi)存漏洞大幅減少。
谷歌解釋說(shuō),雖然讓舊代碼基本保持不變似乎有風(fēng)險(xiǎn),而且新代碼有望得到更好的測(cè)試和審查,但事實(shí)恰恰相反,盡管這似乎有違直覺(jué)。
這是因?yàn)樽罱拇a修改引入了大多數(shù)漏洞,因此新代碼幾乎總是包含安全問(wèn)題。與此同時(shí),除非開(kāi)發(fā)人員對(duì)舊代碼進(jìn)行大量修改,否則舊代碼中的漏洞就會(huì)被消除。

內(nèi)存漏洞概率與代碼壽命的關(guān)系,來(lái)源:谷歌
谷歌表示,包括其自身在內(nèi),業(yè)界在處理內(nèi)存安全漏洞方面主要經(jīng)歷了以下四個(gè)階段:
- 被動(dòng)打補(bǔ)?。鹤畛醯闹攸c(diǎn)是在發(fā)現(xiàn)漏洞后進(jìn)行修復(fù)。這種方法導(dǎo)致持續(xù)的成本,因?yàn)樾枰l繁更新,而用戶在此期間仍然容易受到攻擊。
 - 主動(dòng)緩解:下一步是實(shí)施策略,增加漏洞利用的難度(如堆棧金絲雀、控制流完整性)。然而,這些措施往往需要犧牲性能,并導(dǎo)致與攻擊者之間的貓鼠游戲。
 - 主動(dòng)發(fā)現(xiàn)漏洞:這一代人使用模糊處理和消毒器等工具主動(dòng)發(fā)現(xiàn)漏洞。這種方法雖然有用,但只能治標(biāo),需要持續(xù)的關(guān)注和努力。
 - 高保障預(yù)防(安全編碼): 最新的方法強(qiáng)調(diào)通過(guò)使用 Rust 等內(nèi)存安全語(yǔ)言從源頭上預(yù)防漏洞。這種 “設(shè)計(jì)安全 ”方法提供了可擴(kuò)展的長(zhǎng)期保證,打破了被動(dòng)修復(fù)和代價(jià)高昂的緩解措施的循環(huán)。
 - 谷歌解釋稱:通過(guò)這些方法,整個(gè)行業(yè)的產(chǎn)品都得到了顯著增強(qiáng),我們將繼續(xù)致力于應(yīng)對(duì)、緩解和主動(dòng)查找漏洞。
 
盡管如此,越來(lái)越明顯的是,這些方法不僅不足以在內(nèi)存安全領(lǐng)域達(dá)到可接受的風(fēng)險(xiǎn)水平,而且還會(huì)給開(kāi)發(fā)人員、用戶、企業(yè)和產(chǎn)品帶來(lái)持續(xù)且不斷增加的成本。
正如包括 CISA 在內(nèi)的眾多政府機(jī)構(gòu)在其 “按設(shè)計(jì)保證安全 ”報(bào)告中所強(qiáng)調(diào)的,只有采用按設(shè)計(jì)保證安全的做法,我們才能打破不斷創(chuàng)建和應(yīng)用修復(fù)程序的惡性循環(huán)”。
去年 6 月,美國(guó)網(wǎng)絡(luò)安全和基礎(chǔ)設(shè)施安全局(CISA)警告說(shuō),在使用最廣泛的開(kāi)源項(xiàng)目中,有 52% 使用了內(nèi)存不安全的語(yǔ)言。
即使是用內(nèi)存安全語(yǔ)言編寫(xiě)的項(xiàng)目,也往往依賴于用內(nèi)存不安全語(yǔ)言編寫(xiě)的組件,因此安全風(fēng)險(xiǎn)的解決非常復(fù)雜。
CISA 建議軟件開(kāi)發(fā)人員使用 Rust、Java 和 GO 等內(nèi)存安全語(yǔ)言編寫(xiě)新代碼,并將現(xiàn)有項(xiàng)目,特別是關(guān)鍵組件過(guò)渡到這些語(yǔ)言。















 
 
 










 
 
 
 