谷歌:安卓內(nèi)存安全漏洞大幅下降68%
過去五年中,Android(安卓)系統(tǒng)的內(nèi)存安全漏洞比例從2019年的76%大幅下降至2024年的24%,下降幅度超過68%。且Android安全性得到顯著改善的同時,并未影響向后兼容性。
谷歌雙管齊下治理內(nèi)存安全
與Chromium系統(tǒng)內(nèi)存安全漏洞70%的比例相比,Android的表現(xiàn)尤為突出,展示了一個龐大的項目如何在保持系統(tǒng)穩(wěn)定性的同時,實現(xiàn)安全性提升。谷歌表示,這一成果主要得益于優(yōu)先使用內(nèi)存安全語言(如Rust)編寫新代碼,大大減少了新漏洞的引入。
過去五年安卓內(nèi)存安全漏洞持續(xù)減少
與此同時,谷歌強調(diào)對舊代碼進行維護時,只做最小的必要修改,專注于重要的安全修復,而非進行大規(guī)模重寫,避免破壞系統(tǒng)的互操作性。谷歌的報告指出:“我們認識到,無需全部重寫現(xiàn)有的非內(nèi)存安全代碼,而是將重點放在確保互操作性的安全和便捷性上。”
這一策略使得舊代碼隨著時間推移變得更加成熟和安全,無論它最初是用何種語言編寫的,內(nèi)存相關漏洞的數(shù)量都會逐漸減少。谷歌采用的兩大核心策略產(chǎn)生了協(xié)同效應,推動了Android作為全球最廣泛使用的移動平臺內(nèi)存漏洞數(shù)量的顯著下降。
解決內(nèi)存安全問題的四個階段
谷歌指出,行業(yè)在應對內(nèi)存安全漏洞方面經(jīng)歷了四個主要階段:
- 被動修補:最初,行業(yè)主要在漏洞發(fā)現(xiàn)后進行修復,這種方式雖然解決了問題,但導致頻繁的更新,用戶在漏洞未修復期間處于危險中。
- 主動緩解措施:隨著時間推移,人們采取了多種策略(如堆棧金絲雀、控制流完整性)來增加漏洞利用的難度,但這些措施通常伴隨性能的下降,并形成了與攻擊者的“貓鼠游戲”。
- 主動發(fā)現(xiàn)漏洞:此階段引入了模糊測試和工具來提前發(fā)現(xiàn)漏洞,雖然有效,但這種方法仍然只是治標不治本,且需要持續(xù)投入大量資源。
- 高安全保障的預防措施(安全編碼):第四階段強調(diào)通過內(nèi)存安全語言(如Rust)從源頭防止漏洞發(fā)生,采用“設計即安全”的方法,從根本上減少了漏洞的產(chǎn)生,提供了可擴展的長期保障。
谷歌的實踐方法不僅增強了其自身產(chǎn)品的安全性,還為整個行業(yè)提供了有益的經(jīng)驗。然而,谷歌也指出,傳統(tǒng)的修補和緩解措施帶來了不斷增加的成本,尤其是在內(nèi)存安全領域。只有采用安全設計的實踐,才能有效終止這一“修補—漏洞”循環(huán)。
應對未來的內(nèi)存安全挑戰(zhàn)
盡管谷歌和其他公司已經(jīng)取得顯著進展,但內(nèi)存安全仍然是行業(yè)面臨的主要挑戰(zhàn)之一。2023年6月,美國網(wǎng)絡安全和基礎設施安全局(CISA)警告稱,52%最廣泛使用的開源項目仍在使用非內(nèi)存安全語言。即便是使用內(nèi)存安全語言編寫的項目,往往也依賴于非內(nèi)存安全組件,這使得風險更加復雜化。
CISA建議軟件開發(fā)人員應盡量使用內(nèi)存安全語言(如Rust、Java和Go)編寫新代碼,并逐步將現(xiàn)有項目,特別是關鍵組件,轉(zhuǎn)向這些語言,以提高整體安全性。