行業(yè)動(dòng)態(tài)

70% 的Chrome漏洞與內(nèi)存管理相關(guān),谷歌計(jì)劃使用安全編程語(yǔ)言

來(lái)源:聚銘網(wǎng)絡(luò)    發(fā)布時(shí)間:2020-05-26    瀏覽次數(shù):
 

信息來(lái)源:安全內(nèi)參


內(nèi)存管理和安全問(wèn)題是谷歌和微軟面臨的棘手問(wèn)題,谷歌表示計(jì)劃探索適時(shí)使用“安全的”編程語(yǔ)言,比如 Rust、Swift、JavaScript、Kotlin 或 Java來(lái)解決Chrome不安全問(wèn)題。

上周,谷歌工程師表示,Chrome 代碼庫(kù)中70%的嚴(yán)重漏洞與內(nèi)存管理和安全有關(guān)。

在這70%的漏洞中,一半是釋放后使用漏洞,因?qū)?nèi)存指針(地址)的管理不正確造成,使攻擊者能夠攻擊 Chrome 的內(nèi)部組件。這是谷歌工程師分析 Chrome 自2015年穩(wěn)定版起修復(fù)的912個(gè)安全漏洞分析得出的結(jié)果,這些漏洞的評(píng)級(jí)為“高?!被颉皣?yán)重”。

而在2019年2月,微軟在一次安全會(huì)議上分享了類似數(shù)據(jù),并表示,在過(guò)去12年中,大約70%的微軟產(chǎn)品更新解決的是內(nèi)存安全漏洞問(wèn)題。

無(wú)窮盡的內(nèi)存管理問(wèn)題

谷歌和微軟處理的本質(zhì)上是一類問(wèn)題,即“不安全的”編程語(yǔ)言 C和 C++ 中的問(wèn)題。

這兩種語(yǔ)言都是幾十年前創(chuàng)建的老舊編程工具,當(dāng)時(shí)安全利用和網(wǎng)絡(luò)攻擊尚未構(gòu)成威脅模型,且很多早期軟件開(kāi)發(fā)人員并未考慮到這個(gè)問(wèn)題。結(jié)果,C和 C++ 使得編程人員能夠完全控制管理應(yīng)用的內(nèi)存指針(地址),在犯下基本的內(nèi)存管理錯(cuò)誤時(shí)不會(huì)受到限制或得到警告信息。

這些早期編程錯(cuò)誤導(dǎo)致應(yīng)用程序中引入內(nèi)存管理漏洞,包括釋放后使用、緩沖區(qū)溢出、競(jìng)爭(zhēng)條件、雙重釋放、通配符指針等等。這些內(nèi)存管理漏洞是攻擊者試圖查找并利用的最愛(ài),因?yàn)樗麄兡芙璐双@得在設(shè)備內(nèi)存中植入代碼的能力并由受害者應(yīng)用程序(瀏覽器、服務(wù)器、操作系統(tǒng)等)執(zhí)行。

MITRE 公司在年初發(fā)布一份榜單,緩沖區(qū)溢出漏洞高居榜首,其它兩個(gè)內(nèi)存管理問(wèn)題(界外讀取排名第五,釋放后使用排名第七)也位列前十。

近年來(lái)軟件工程不斷發(fā)展,開(kāi)發(fā)人員從根本上排除多數(shù)安全缺陷的能力以及部署安全防護(hù)措施的能力有所增強(qiáng)。

但,在內(nèi)存管理漏洞方面卻是個(gè)例外。

谷歌將著手處理

谷歌表示,自2019年3月起,在130個(gè)Chrome 漏洞中,其中125個(gè)“嚴(yán)重”等級(jí)的漏洞和內(nèi)存損壞問(wèn)題相關(guān),這表明,雖然在修復(fù)其它漏洞類型方面取得進(jìn)展,但內(nèi)存管理仍然是個(gè)問(wèn)題。

內(nèi)存管理漏洞的問(wèn)題如此巨大,谷歌 Chrome 工程師現(xiàn)在不得不遵守“The Rule of 2”規(guī)則。按照規(guī)則,工程師編寫(xiě)好 Chrome 新功能后,代碼不得違反兩個(gè)以上的如下條件:

  • 代碼處理不可信輸入。

  • 代碼未在沙箱環(huán)境下運(yùn)行。

  • 代碼用不安全的編程語(yǔ)言(C/C++)編寫(xiě)而成。

雖然軟件公司之前都試圖修復(fù) C和 C++ 的的內(nèi)存管理問(wèn)題,但 Mozilla 是其中最為成功的,該公司通過(guò)贊助、推廣和在火狐瀏覽器中大力使用 Rust 編程語(yǔ)言而取得突破。

如今,Rust 被視作最安全的編程語(yǔ)言,是 C和C++ 語(yǔ)言的理想替代者,這都要?dú)w功于 Mozilla 早期付出的努力。但 Mozilla 并非唯一一家獲得突破的公司。微軟也在積極探索 C和 C++ 的替代品。從早期的 Checked C 項(xiàng)目開(kāi)始,微軟現(xiàn)在正在試驗(yàn) Rust 語(yǔ)言,而且也在構(gòu)建自己的類似 Rust 的“安全”編程語(yǔ)言(Project Verona 秘密項(xiàng)目的一部分)。上周,微軟在 Build 虛擬大會(huì)上表示,這兩個(gè)項(xiàng)目都獲得成功,未來(lái)將致力于采用安全編程語(yǔ)言。

上周,谷歌也宣布推出類似規(guī)劃。谷歌表示也計(jì)劃研究“解決Chrome 中的內(nèi)存不安全問(wèn)題”。Chrome 是當(dāng)前最流行的網(wǎng)絡(luò)瀏覽器,70%的互聯(lián)網(wǎng)用戶都在使用它。

Chrome 沙箱已達(dá)峰值

直到今天,谷歌工程師一直不遺余力地支持在 Chrome 中實(shí)現(xiàn)沙箱方法。他們將數(shù)十個(gè)進(jìn)程隔離到自己的沙箱中并于近期推出 Site Isolation 功能,將每個(gè)站點(diǎn)的資源也融合到自己的沙箱進(jìn)程中。

然而,谷歌工程師表示,考慮到性能問(wèn)題,沙箱 Chrome 組件的方法已達(dá)到最大收益,因此公司必須探索新方法。谷歌表示未來(lái)計(jì)劃為Chrome 代碼庫(kù)開(kāi)發(fā)定制化 C++ 庫(kù),從而更好地防范內(nèi)存相關(guān)問(wèn)題。

谷歌也在探索 MiraclePtr 項(xiàng)目,旨在“將可利用的釋放后使用問(wèn)題轉(zhuǎn)變?yōu)榉前踩员罎?wèn)題,具有可接受的性能、內(nèi)存、二進(jìn)制大小和最小穩(wěn)定性影響。”

最后但也同樣重要的一點(diǎn)是,谷歌表示計(jì)劃探索適時(shí)使用“安全的”編程語(yǔ)言,比如 Rust、Swift、JavaScript、Kotlin 或 Java。


 
 

上一篇:泰國(guó)移動(dòng)運(yùn)營(yíng)商泄露83億互聯(lián)網(wǎng)記錄

下一篇:2020年05月26日 聚銘安全速遞