2026 年每日通報的 CVE 數量比前一年多 131%。

AI

AI 漏洞修補:AI 修正 pull request 能做到什麼

漏洞管理中耗時的部分從來不是找出漏洞,而是撰寫修正、讓程式碼配合破壞性升級,並讓變更通過審查。這正是 AI 如今擅長的部分。它的修正是否有幫助,取決於它被要求修正什麼。

更新日期

什麼是 AI 修補

AI 漏洞修補使用語言模型為已知漏洞產生修正,主要有三種形式:

  • 程式碼修正建議。模型在靜態分析警示旁提出修補程式。例如 GitHub Copilot Autofix「會針對在 pull request 與預設分支上發現的 CodeQL 警示,自動產生程式碼變更建議」。
  • 連帶調整程式碼的相依套件升級。提升版本號很容易,困難的是新版本帶來的函式更名或預設值變更。模型可以在同一個 pull request 中完成這些後續變更。
  • 代理式修補。代理自行分多個步驟完成修正:修改程式碼、執行建置與測試、讀取失敗結果、再試一次,並且只在檢查通過後才開啟 pull request。

AI 修正真正發揮價值之處

以規則為基礎的更新機器人早已會開啟 pull request,把有漏洞的套件提升到已修正的版本。但當升級造成破壞時它們就停擺了,因為調整呼叫端的程式碼無法寫成規則。待辦事項正是在這裡堆積:資安更新因為沒人有時間處理主要版本變更,而一擱就是好幾個月。

閱讀變更記錄、找出呼叫位置並改寫,正是語言模型擅長的工作。一個連同升級與程式碼變更一起送達、並已完成建置與測試的 AI 修正,能把某人一週的心力轉化為一次審查。

AI 修正在哪裡會出錯

對其限制最清楚的說明來自廠商本身。關於 Copilot Autofix,GitHub 寫道:

  • 它「使用非確定性的生成式模型。即使警示與程式碼相同,它也可能無法產生可行的建議,或每次嘗試的建議都不同。」
  • 「系統不知道哪些相依套件版本受支援或安全,並可能建議以統計上可能的名稱發布的虛構相依套件。」

第二點並非假設。針對程式碼生成模型的研究已測量出它們推薦不存在套件的頻率,而這些名稱可能被攻擊者註冊並植入惡意軟體。安裝了幻覺套件的修正,等於用一個更嚴重的漏洞取代原本的漏洞。

三道防護措施即可涵蓋大部分風險:

  1. 建置並測試每一個修正,再交由人員審查,讓審查時間花在有效的修正上。
  2. 檢查每一個新增或變更的套件,比對套件登錄庫與您預期的版本。
  3. 合併時保留人員把關。AI 修正是一位貢獻者的 pull request,不是一項決策。

垃圾進,pull request 出

AI 修補工具只會修正它被告知的漏洞。如果這份清單是從 lockfile 或掃描過的映像檔重建而來,它就會承襲重建過程中的每一個缺口:建置時下載卻沒有任何清單檔宣告的工具、與建置實際解析結果不同的版本、從快取還原的套件。結果工具會對部分漏洞信心滿滿地開啟 pull request,卻從未得知其他漏洞。

有些團隊更進一步,要求模型自行推斷相依套件。這會讓資產清冊也變得非確定性,而這恰恰是整個流程中每次都應得出相同結果的那一部分。AI 產生的 SBOM 一文說明了為何推測出來的資產清冊不能作為佐證資料。

有效的模式是底層使用確定性資料,上層運用 AI 判斷:一份記錄每次建置實際內容的清單,透過查詢比對資安公告,再由 AI 撰寫修正。

CRACI 的角色

CRACI 是確定性的那一層。它在自己的執行器上執行您的 GitHub Actions 作業,並記錄每個作業實際下載的套件,包括遞移相依套件與從快取還原的套件,且為每個作業標示完整性狀態。它會持續重新評估受監控的 SBOM,因此新的資安公告會對應到它所影響的建置;資安團隊則研判每個發現項目,並將其交給負責修正的團隊。

這就是 AI 修正應該作為起點的清單;修正合併後,下一次建置的 SBOM 會顯示已修正的版本是否真的是建置所使用的版本。完整功能請參閱漏洞追蹤,各種方法的適用場合則請參閱 AI 與確定性資安的比較。

AI 漏洞修補:常見問題

什麼是 AI 漏洞修補?

AI 漏洞修補是指使用語言模型為漏洞產生修正:針對靜態分析發現的程式碼變更,或是相依套件升級再加上該升級所需的程式碼變更。產出通常是一項建議,或是一個交由人員審查的 pull request。

什麼是代理式修補(agentic remediation)?

代理式修補讓 AI 代理具備工具,能自行分多個步驟完成修正:讀取發現項目、修改程式碼、執行建置與測試,反覆調整直到通過,再開啟 pull request。它與一次性建議的差別在於,代理會在人員看到之前先自行檢查成果。

AI 產生的資安修正可以安全合併嗎?

請比照其他貢獻者的 pull request 處理。GitHub 指出 Copilot Autofix 具有非確定性,並警告它可能建議虛構的相依套件,因此請審查變更、執行測試,並確認它新增的每個套件都確實存在,且正是您預期的那一個。

AI 能找出相依套件中的漏洞嗎?

這部分不適合交給 AI。某個套件版本是否受已知資安公告影響,是一項查詢工作,每次都應得出相同結果。請讓確定性工具依據記錄下來的 SBOM 產生有漏洞的套件清單,再把 AI 用在需要判斷力的地方:撰寫並調整修正。

AI 修補工具需要哪些條件才能發揮效果?

一份準確列出實際有漏洞項目的清單、一套可用來驗證修正的建置與測試,以及一位負責合併的人員。最常缺少的是第一項:針對產品根本沒有出貨的套件所開的修正 pull request 只是雜訊,而資產清冊遺漏的有漏洞套件則永遠不會得到修正。

為您的修正提供正確的起點

預約示範,在 CRACI 上執行您的一個工作流程。查看建置實際引入的每一個有漏洞套件,一切都是記錄而來,而非推測。

預約示範