Google DeepMind CodeMender AI 代理程式,用於程式碼安全

Google DeepMind 已推出 CodeMender,一個 AI 驅動的代理程式,旨在自動發現並修補軟體漏洞。CodeMender 解決了 AI 驅動的漏洞發現速度與人類修補能力之間日益擴大的差距,提供對新漏洞的即時修補以及對現有程式碼的主動重寫,以消除整體安全風險。

自動化漏洞修補

CodeMender 利用 Gemini Deep Think 模型的推理能力,作為一個能自行除錯與修復複雜安全漏洞的自主代理程式。為確保修補的可靠性,該代理程式採用嚴謹的驗證流程,只將高品質的修補(即解決根本原因、保持功能正確、避免回歸、遵循風格指南)呈現給人類審查。

技術工具與分析

CodeMender 整合多項先進的程式分析工具,系統性檢視程式碼模式、資料流與控制流:

  • 先進程式分析: 代理程式使用靜態分析、動態分析、差分測試、模糊測試與 SMT 求解器,以識別架構弱點與安全缺陷的根本原因。
  • 多代理系統: CodeMender 為不同任務使用專門的代理程式。包括一個基於 LLM 的批評工具,該工具比較原始與修改後的程式碼,以驗證變更不會引入回歸,並允許代理程式自行校正。

根本原因分析與複雜修補

CodeMender 能夠識別從崩潰報告中不易看出的根本原因。例如,在某個案例中,崩潰報告顯示堆緩衝區溢位,但 CodeMender 發現實際根本原因是 XML 元素在解析過程中的堆疊管理不當。該代理程式亦能產生非平凡的修補,包括修改專案內自訂的 C 程式碼生成系統。

主動式程式碼安全與重寫

除了被動的修補之外,CodeMender 會主動重寫現有程式碼,以實作更安全的資料結構與 API。

邊界安全的實作

CodeMender 被部署以對 libwebp 影像壓縮函式庫套用 -fbounds-safety 註解。這些註解讓編譯器加入邊界檢查,防止攻擊者利用緩衝區溢位或下溢來執行任意程式碼。

DeepMind 指出,先前在 libwebp(CVE-2023-4863)發生的堆緩衝區溢位被用於零點擊 iOS 漏洞利用,若當時已加入這些註解,將無法被利用。

迭代式自行校正

在主動重寫過程中,CodeMender 能自動修正因自身註解而產生的編譯錯誤與測試失敗。它使用配置為功能等價的 LLM 判斷工具來驗證功能是否保持完整;若偵測到失敗,代理程式會根據回饋自行校正。

部署與開源影響

CodeMender 已向開源專案上游提交了 72 項安全修補,其中一些專案的程式碼量高達 450 萬行。

為了維持安全性與可靠性,Google DeepMind 正採取謹慎的部署策略:

  • 人機協作(Human-in-the-Loop): 目前所有由 CodeMender 產生的修補皆由人工研究人員審查,然後再提交上游。
  • 社群參與: 該實驗室正逐步增加提交量,並與關鍵開源專案的維護者聯繫,以根據社群回饋持續迭代。
  • 未來可用性: 長期目標是將 CodeMender 釋出為所有軟體開發者皆可使用的工具,以保護其程式碼基礎。

Sources