Google DeepMind公開其研究中的人工智慧代理CodeMender,可自動找出並修補軟體漏洞,並能重寫既有程式以移除風險,官方表示,過去6個月已對多個開源專案提交72項安全修補,涵蓋規模可達450萬行程式碼。
研究團隊指出,傳統自動化如模糊測試(Fuzzing)雖有幫助,但在大型程式碼庫中仍耗時費力。DeepMind先前以Big Sleep與OSS-Fuzz展示人工智慧發現零時差漏洞的潛力,但隨著人工智慧發現漏洞的速度越來越快,人工修補與審核已經跟不上節奏。
因此DeepMind開發CodeMender,使其除了具有及時產生並套用修補漏洞的能力,還能主動重寫脆弱介面與資料結構,盡可能從源頭消除常見缺陷類別。
CodeMender由Gemini Deep Think模型驅動,會先對程式行為與語意進行推理,再決定修改策略,系統在提出修補前會經過自動驗證,僅將符合條件的高品質修補交由人工審核。自動驗證著重確認修補能確實解決問題根因、維持程式功能的正確性且確保無回歸(Regression)情形,並遵循原始專案的風格規範。
CodeMender整合一組程式分析工具,涵蓋靜態分析、動態分析、差異測試、模糊測試與SMT求解器,再輔以可檢視程式行為的偵錯器與程式碼瀏覽工具。系統同時運用多代理設計,包含以大型語言模型打造的評析工具,能逐檔比對原始與修改後的差異、辨識可能的回歸點並觸發自我修正。
官方舉CodeMender代理處理一則程式崩潰回報作為案例,雖然表面症狀是堆積緩衝區溢位,但真正原因在於XML元素解析過程的堆疊管理不當,CodeMender最終修補只改動少數程式碼,精準解決根本原因。此外,代理也能處理較複雜的物件生命周期問題,甚至修改專案內部自訂的C程式碼生成系統,提出可驗證的修補方案。
DeepMind研究團隊展示CodeMender的主動修復能力,代理先針對有風險的路徑進行重寫,改用較安全的資料結構與API。對仍需重點保護的部分,開發者可套用像是-fbounds-safety這樣的註記,讓編譯器在已加註並重新編譯的程式路徑自動插入邊界檢查,盡量消除堆積緩衝區溢位的可利用性。
目前CodeMender仍屬研究階段,此階段先與重要開源專案維護者溝通並逐步擴大提交量,持續彙整社群回饋以強化流程與工具。DeepMind表示,數月內將發表技術論文與報告,後續也會在品質與流程穩定後向開發者釋出。
