AI自動挖洞不是夢,谷歌AI工具OSS-FASZ又發(fā)現(xiàn)26個(gè)開源漏洞
谷歌透露,其基于人工智能的模糊工具OSS-Fuzz 已被用于幫助識別各種開源代碼庫中的26個(gè)漏洞,包括 OpenSSL 加密庫中的一個(gè)中度漏洞。這一事件代表了自動化漏洞發(fā)現(xiàn)的一個(gè)里程碑:每個(gè)漏洞都是使用AI發(fā)現(xiàn)的,利用AI生成和增強(qiáng)的模糊測試目標(biāo)。
提到的OpenSSL漏洞是CVE-2024-9143(CVSS評分:4.3),一個(gè)超出范圍的內(nèi)存寫入缺陷,可能導(dǎo)致應(yīng)用程序崩潰或遠(yuǎn)程代碼執(zhí)行。這個(gè)問題已經(jīng)在OpenSSL的3.3.3、3.2.4、3.1.8、3.0.16、1.1.1zb和 1.0.2zl版本中得到了解決。
破題人類無法發(fā)現(xiàn)的漏洞
谷歌在2023年8月增加了利用大型語言模型(LLM)來提高OSS- Fuzz中模糊覆蓋率的能力,并表示該漏洞可能在代碼庫中存在了20年,而且在現(xiàn)有的由人類編寫的模糊目標(biāo)中是無法發(fā)現(xiàn)的。此外,他們還指出,使用AI生成模糊測試目標(biāo)已經(jīng)提高了272個(gè)C/C++項(xiàng)目的代碼覆蓋率,新增了超過370,000行新代碼。
谷歌解釋說,這樣的漏洞之所以能夠長時(shí)間未被發(fā)現(xiàn),一個(gè)原因是線覆蓋率并不能保證函數(shù)沒有漏洞。代碼覆蓋率作為一項(xiàng)指標(biāo),無法衡量所有可能的代碼路徑和狀態(tài),不同的標(biāo)志和配置可能會觸發(fā)不同的行為,從而暴露出不同的漏洞。這些人工智能輔助的漏洞發(fā)現(xiàn)也是可能的,因?yàn)長LMs被證明擅長模仿開發(fā)人員的模糊工作流程,從而允許更多的自動化。正如谷歌之前就提到過,其基于LLM的框架Big Sleep幫助發(fā)現(xiàn)SQLite開源數(shù)據(jù)庫引擎中的一個(gè)零日漏洞。
C++代碼安全性大幅提升
與此同時(shí),谷歌一直在努力將自己的代碼庫轉(zhuǎn)換為內(nèi)存安全語言,如Rust,同時(shí)還對現(xiàn)有的C++項(xiàng)目(包括Chrome)中的空間內(nèi)存安全漏洞(當(dāng)代碼可能訪問超出其預(yù)定范圍的內(nèi)存時(shí))進(jìn)行改造。其中包括遷移到安全緩沖區(qū)和啟用強(qiáng)化的libc ++,后者將邊界檢查添加到標(biāo)準(zhǔn)的 C ++數(shù)據(jù)結(jié)構(gòu)中,以消除大量的空間安全缺陷。它進(jìn)一步指出,納入這一變化所產(chǎn)生的間接費(fèi)用很?。雌骄?.30%的績效影響)。
谷歌表示,由開源貢獻(xiàn)者最近添加的“hardened libc++”引入了一系列安全檢查,旨在捕獲生產(chǎn)中的越界訪問等漏洞。雖然C++不會完全成為內(nèi)存安全的語言,但這些改進(jìn)降低了風(fēng)險(xiǎn),從而使得軟件更加可靠和安全。
具體來說,hardened libc++通過為標(biāo)準(zhǔn)C++數(shù)據(jù)結(jié)構(gòu)添加邊界檢查來消除一大類空間安全漏洞。例如,hardened libc++確保對std::vector的每個(gè)元素的訪問都保持在其分配的邊界內(nèi),防止嘗試讀取或?qū)懭氤鲇行?nèi)存區(qū)域的嘗試。同樣,hardened libc++在允許訪問之前檢查std::optional是否為空,防止訪問未初始化的內(nèi)存。這種改進(jìn)對于提高C++代碼的安全性和可靠性具有重要意義。
參考原文:https://thehackernews.com/2024/11/googles-ai-powered-oss-fuzz-tool-finds.html