谷歌的OSS-Fuzz,一個基於人工智慧的模糊測試工具,在近期取得了顯著成果,成功發現了26個開源程式碼庫中的漏洞,其中包括一個存在近20年的OpenSSL加密庫中等嚴重性漏洞。這項突破標誌著自動化漏洞偵測進入了一個新的里程碑,AI產生的模糊測試目標在提升程式碼覆蓋率和發現深層漏洞方面展現了強大的能力。本文將詳細介紹OSS-Fuzz的最新發現、AI技術在其中的作用以及Google為提升程式碼安全所採取的措施。
近日,Google宣布其基於人工智慧的模糊測試工具OSS-Fuzz 成功發現了26個開源程式碼庫中的漏洞,其中包括OpenSSL 加密庫中的一個中等嚴重性漏洞。
谷歌的開源安全團隊在一篇分享的部落格文章中表示:“這些漏洞的發現標誌著自動化漏洞檢測的新里程碑:每個漏洞都是透過AI 生成和增強的模糊測試目標找到的。”

圖源備註:圖片由AI生成,圖片授權服務商Midjourney
這次發現的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。谷歌指出,這個漏洞可能在程式碼庫中存在了近20年,而傳統人類編寫的模糊測試目標無法發現這個問題。
谷歌也提到,借助AI 產生的模糊測試目標,272個C/C++ 專案的程式碼覆蓋率得到了提升,增加了超過370,000行的新程式碼。谷歌解釋道,之所以許多錯誤會被忽視,是因為程式碼覆蓋率並不等於功能沒有漏洞。僅靠程式碼覆蓋率這項指標並不能衡量所有可能的程式碼路徑和狀態,因為不同的標誌和配置可能會觸發不同的行為,從而暴露出不同的漏洞。
這種AI 輔助的漏洞發現也得益於大語言模型(LLMs)在模擬開發者模糊測試工作流程方面的出色表現,進一步提高了自動化程度。此外,Google本月初也透露,其基於LLM 的框架Big Sleep 幫助檢測到SQLite 開源資料庫引擎中的一個零日漏洞。
為了提高自身程式碼庫的安全性,Google正在推動將程式碼遷移到記憶體安全語言如Rust,並對現有的C++ 專案進行空間記憶體安全漏洞的修復。這包括遷移到安全緩衝區並啟用硬化libc++,透過對標準C++ 資料結構新增邊界檢查,消除一類重要的空間安全漏洞。谷歌表示,實施這些改進所造成的效能損耗極小,平均僅0.30%。
谷歌進一步強調,最近由開源貢獻者添加的硬化libc++ 引入了一系列安全檢查,旨在在生產環境中捕捉諸如越界訪問等漏洞。儘管C++ 語言無法完全實現記憶體安全,這些改進無疑降低了風險,使軟體更加可靠和安全。
劃重點:
谷歌的OSS-Fuzz 工具發現了26個開源專案中的漏洞,包括一個存在近20年的OpenSSL 漏洞。
AI 產生的模糊測試目標提高了272個C/C++ 專案的程式碼覆蓋率,增加了超過370,000行新程式碼。
谷歌正在將程式碼遷移到記憶體安全語言,並透過硬化libc++ 等措施提升C++ 專案的安全性。
總而言之,Google利用AI技術顯著提升了軟體安全檢測能力,其經驗為其他機構提供了寶貴的參考。未來,AI在軟體安全領域將扮演越來越重要的角色,幫助開發者建構更安全可靠的軟體系統。