近日,谷歌宣布其基于人工智能的模糊測(cè)試工具 OSS-Fuzz 成功發(fā)現(xiàn)了26個(gè)開源代碼庫中的漏洞,其中包括 OpenSSL 加密庫中的一個(gè)中等嚴(yán)重性漏洞。
谷歌的開源安全團(tuán)隊(duì)在一篇分享的博客文章中表示:“這些漏洞的發(fā)現(xiàn)標(biāo)志著自動(dòng)化漏洞檢測(cè)的新里程碑:每個(gè)漏洞都是通過 AI 生成和增強(qiáng)的模糊測(cè)試目標(biāo)找到的。”
圖源備注:圖片由AI生成,圖片授權(quán)服務(wù)商Midjourney
此次發(fā)現(xiàn)的 OpenSSL 漏洞編號(hào)為 CVE-2024-9143(CVSS 評(píng)分為4.3),其表現(xiàn)為一個(gè)越界內(nèi)存寫入錯(cuò)誤,可能導(dǎo)致應(yīng)用程序崩潰或遠(yuǎn)程代碼執(zhí)行。該問題已在 OpenSSL 的多個(gè)版本中得到修復(fù),包括3.3.3、3.2.4、3.1.8、3.0.16、1.1.1zb 和1.0.2zl。谷歌指出,這個(gè)漏洞可能在代碼庫中存在了近20年,而傳統(tǒng)人類編寫的模糊測(cè)試目標(biāo)無法發(fā)現(xiàn)該問題。
谷歌還提到,借助 AI 生成的模糊測(cè)試目標(biāo),272個(gè) C/C++ 項(xiàng)目的代碼覆蓋率得到了提升,增加了超過370,000行的新代碼。谷歌解釋道,之所以許多錯(cuò)誤會(huì)被忽視,是因?yàn)榇a覆蓋率并不等同于功能沒有漏洞。僅靠代碼覆蓋率這一指標(biāo)并不能衡量所有可能的代碼路徑和狀態(tài),因?yàn)椴煌臉?biāo)志和配置可能會(huì)觸發(fā)不同的行為,從而暴露出不同的漏洞。
這種 AI 輔助的漏洞發(fā)現(xiàn)還得益于大語言模型(LLMs)在模擬開發(fā)者模糊測(cè)試工作流程方面的出色表現(xiàn),進(jìn)一步提高了自動(dòng)化程度。此外,谷歌本月初還透露,其基于 LLM 的框架 Big Sleep 幫助檢測(cè)到 SQLite 開源數(shù)據(jù)庫引擎中的一個(gè)零日漏洞。
為了提高自身代碼庫的安全性,谷歌正在推動(dòng)將代碼遷移到內(nèi)存安全語言如 Rust,并對(duì)現(xiàn)有的 C++ 項(xiàng)目進(jìn)行空間內(nèi)存安全漏洞的修復(fù)。這包括遷移到安全緩沖區(qū)并啟用硬化 libc++,通過對(duì)標(biāo)準(zhǔn) C++ 數(shù)據(jù)結(jié)構(gòu)添加邊界檢查,消除一類重要的空間安全漏洞。谷歌表示,實(shí)施這些改進(jìn)所造成的性能損耗極小,平均僅為0.30%。
谷歌進(jìn)一步強(qiáng)調(diào),最近由開源貢獻(xiàn)者添加的硬化 libc++ 引入了一系列安全檢查,旨在在生產(chǎn)環(huán)境中捕捉諸如越界訪問等漏洞。盡管 C++ 語言無法完全實(shí)現(xiàn)內(nèi)存安全,這些改進(jìn)無疑降低了風(fēng)險(xiǎn),使軟件更加可靠和安全。
劃重點(diǎn):
?? 谷歌的 OSS-Fuzz 工具發(fā)現(xiàn)了26個(gè)開源項(xiàng)目中的漏洞,包括一個(gè)存在近20年的 OpenSSL 漏洞。
?? AI 生成的模糊測(cè)試目標(biāo)提高了272個(gè) C/C++ 項(xiàng)目的代碼覆蓋率,增加了超過370,000行新代碼。
?? 谷歌正在將代碼遷移到內(nèi)存安全語言,并通過硬化 libc++ 等措施提升 C++ 項(xiàng)目的安全性。

