谷歌工程师:Chrome 70%的安全漏洞是内存安全问题,Rust又成备选语言
近日,有谷歌工程師分析了自 2015 年以來在 Chrome 穩(wěn)定版分支中修復(fù)的 912 個(gè)安全錯(cuò)誤。并發(fā)現(xiàn),在這些被標(biāo)記為“高”或“嚴(yán)重”等級(jí)的所有安全漏洞中,大約 70% 是內(nèi)存管理和安全問題。
這其中又有一半是 use-after-free 漏洞。這種安全問題是由對(duì)內(nèi)存指針(地址)的錯(cuò)誤管理引起的,為攻擊者打開了攻擊 Chrome 內(nèi)部組件的大門。
這一數(shù)據(jù)恰巧與微軟此前的研究結(jié)果相同:微軟安全響應(yīng)中心(MSRC)對(duì)自 2004 年以來所有報(bào)告過的微軟安全漏洞進(jìn)行了分類,所有微軟年度補(bǔ)丁中約有 70%是針對(duì)內(nèi)存安全漏洞的修復(fù)程序。
微軟安全響應(yīng)中心曾給出解釋,這是因?yàn)樗麄兇蠖鄶?shù)產(chǎn)品使用 C 和 C++ 編寫,而這兩種編程語言屬于“內(nèi)存不安全”(memory-unsafe)的范疇。管理內(nèi)存執(zhí)行的開發(fā)人員代碼中的一個(gè)漏洞可能導(dǎo)致一系列內(nèi)存安全錯(cuò)誤。
谷歌也面臨著相似的境地。僅僅從 2019 年 3 月到現(xiàn)在,等級(jí)為“嚴(yán)重”的 130 個(gè) Chrome 漏洞中,有 125 個(gè)與內(nèi)存損壞相關(guān),可見內(nèi)存管理仍然是一個(gè)很大的問題。
為此,谷歌工程師必須遵循 “2 的規(guī)則”(The Rule of 2)。即每當(dāng)工程師編寫新的 Chrome 特性時(shí),其代碼不得破壞以下兩個(gè)以上的條件:
- 該代碼處理不可信的輸入
- 代碼在沒有沙箱的情況下運(yùn)行
- 代碼使用不安全的編程語言(C/C ++)編寫
迄今為止,谷歌一直在 Chrome 中嘗試使用沙箱方法。他們將數(shù)十個(gè)進(jìn)程隔離到自己的沙箱中,最近還推出了“站點(diǎn)隔離”功能,該功能將每個(gè)站點(diǎn)的資源也放入自己的沙箱進(jìn)程中。但谷歌工程師表示,考慮到性能問題,他們使用沙盒化 Chrome 組件的方法已達(dá)到最大收益,現(xiàn)在必須尋求新的方法。
因此,谷歌計(jì)劃研究開發(fā)自定義 C++ 庫,以與 Chrome 的代碼庫一起使用,這些庫可以更好地保護(hù)與內(nèi)存相關(guān)的錯(cuò)誤。
與此同時(shí),谷歌還在探索 MiraclePtr 項(xiàng)目,該項(xiàng)目旨在將“use-after-free bug 轉(zhuǎn)變?yōu)榫哂锌山邮艿男阅堋?nèi)存、二進(jìn)制大小和最小的穩(wěn)定性影響的非安全崩潰”。
最后,值得注意的一點(diǎn)是,谷歌表示計(jì)劃在可能的情況下使用“安全”語言進(jìn)行探索。候選對(duì)象包括 Rust、Swift、JavaScript、Kotlin 和 Java。
消息來源:ZDNet
總結(jié)
以上是生活随笔為你收集整理的谷歌工程师:Chrome 70%的安全漏洞是内存安全问题,Rust又成备选语言的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求一个3个字游戏名字。
- 下一篇: 开源图形编辑器Krita首个测试版登陆P