建站網(wǎng)站教程成品人和精品人的區(qū)別在哪
谷歌決定使用內(nèi)存安全的編程語言 Rust 向 Android 代碼庫中寫入新代碼,盡管舊代碼(用 C/C++ 編寫)沒有被重寫,但內(nèi)存安全漏洞卻大幅減少。
Android 代碼庫中每年發(fā)現(xiàn)的內(nèi)存安全漏洞數(shù)量(來源:谷歌)
Android 不斷發(fā)展,內(nèi)存安全漏洞越來越少
Android 團(tuán)隊(duì)在 2019 年左右開始優(yōu)先將新開發(fā)過渡到內(nèi)存安全語言。這一決定是由于管理內(nèi)存安全漏洞的成本和復(fù)雜性不斷增加。
不重寫舊代碼庫的選擇是基于之前的模擬,而該模擬又基于對(duì)漏洞壽命的研究,該研究顯示漏洞的平均壽命約為 4 年,并且大多數(shù)漏洞存在于新的或最近修改的代碼中。
簡而言之,他們相信,通過使用內(nèi)存安全的語言,新功能引入的錯(cuò)誤會(huì)更少。
隨著舊漏洞隨著時(shí)間的推移而“衰減”,內(nèi)存安全漏洞的數(shù)量預(yù)計(jì)會(huì)下降——事實(shí)也確實(shí)如此。
盡管大多數(shù) [Android] 代碼仍然不安全(但關(guān)鍵是,它們正在逐漸老化),但我們發(fā)現(xiàn)內(nèi)存安全漏洞數(shù)量正在大幅下降。
結(jié)果與我們模擬的結(jié)果一致 (…),甚至更好,這可能是我們同時(shí)努力提高內(nèi)存不安全代碼的安全性的結(jié)果。
內(nèi)存安全問題占 2019 年 Android 漏洞的 76%,目前到 2024 年這一比例為 24%,遠(yuǎn)低于 70% 的行業(yè)標(biāo)準(zhǔn),并且還在繼續(xù)下降。
從被動(dòng)解決方案到主動(dòng)解決方案
隨著軟件制造商和用戶嘗試各種解決方案來對(duì)抗內(nèi)存安全漏洞(正如谷歌指出的那樣,“與其他類型的漏洞相比,這些漏洞更容易被遠(yuǎn)程訪問、用途更廣泛、更容易被惡意利用”)。
措施已逐漸從被動(dòng)措施(修補(bǔ))轉(zhuǎn)向主動(dòng)措施:漏洞緩解策略、通過清理器和模糊器發(fā)現(xiàn)漏洞,以及現(xiàn)在通過使用內(nèi)存安全語言來預(yù)防漏洞。
這一轉(zhuǎn)變的基礎(chǔ)是安全編碼,它通過語言功能、靜態(tài)分析和 API 設(shè)計(jì)將安全不變量直接強(qiáng)制到開發(fā)平臺(tái)中。
其結(jié)果是設(shè)計(jì)安全的生態(tài)系統(tǒng),提供大規(guī)模的持續(xù)保證,避免意外引入漏洞的風(fēng)險(xiǎn)。
安全編碼通過將錯(cuò)誤查找進(jìn)一步向左移動(dòng),甚至在代碼簽入之前,提高了代碼的正確性和開發(fā)人員的工作效率。
我們看到這種轉(zhuǎn)變體現(xiàn)在回滾率(由于意外錯(cuò)誤而導(dǎo)致的緊急代碼恢復(fù))等重要指標(biāo)中。
Android 團(tuán)隊(duì)觀察到 Rust 更改的回滾率不到 C++ 的一半。
本月初,Android 團(tuán)隊(duì)分享了有關(guān)如何在智能手機(jī)固件中逐步引入 Rust 的見解。
內(nèi)存安全的語言才是出路
美國網(wǎng)絡(luò)安全和基礎(chǔ)設(shè)施局 (CISA) 一直在大力提倡使用內(nèi)存安全語言。
最近發(fā)現(xiàn)172個(gè)關(guān)鍵且廣泛使用的開源項(xiàng)目中有 52% 包含用內(nèi)存不安全語言編寫的代碼。
CISA 大力倡導(dǎo)使用內(nèi)存安全語言,這一舉措得到了白宮的響應(yīng)。
谷歌針對(duì) Android 所采取的策略是放棄對(duì)現(xiàn)有代碼庫的重寫,并專注于使互操作性變得安全且方便。
該公司認(rèn)為,其他軟件制造商和組織也可以采用這種策略,而不必?fù)?dān)心增加投資和減緩?fù)瞥鲂鹿δ艿乃俣取?/p>
那些對(duì)過渡到內(nèi)存安全語言時(shí)的各種挑戰(zhàn)和考慮感興趣的人應(yīng)該看看我們最近對(duì)開源安全基金會(huì) (OpenSSF) 總經(jīng)理的專題訪談。(點(diǎn)擊下方鏈接即可閱讀👇🏻)
過渡到內(nèi)存安全語言:挑戰(zhàn)和注意事項(xiàng)-CSDN博客