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