資安公司重算AI修補基準,26%變86%

Trail of Bits於9月15日發文,指1Password那份AI修補基準報告的結論站不住腳。1Password公布的數字是26%的「乾淨修復率」,Trail of Bits拿同一批資料重新統計,得出的結果是3067個修補中有2634個成功阻擋了對應的漏洞利用,86%。

兩個數字相差60個百分點,差距來自計分方式。

四項被點名的問題

Trail of Bits列出四項:

  • 樣本選得太窄。整份基準只用了6個複雜漏洞,各自的修復率在3%到60%之間大幅擺動,用這幾個的平均值代表「AI修補能力」,抽樣雜訊蓋過了訊號。
  • 提示本身有問題。22%的資料來自刻意把Agent引導向錯誤修復的提示。這類測試測的是模型會不會被誤導,不是它能不能修對。
  • 工具被拿掉。36%的測試不允許模型編譯或測試程式碼。人類開發者在同樣條件下修補同一個資安漏洞,成績也好不到哪去。
  • 設定不一致。不同模型用了不同的推理設定,成績之間無法橫向比較。

文章署名四位作者:Anish Naik、Dan Guido、Benjamin Samuels與Marcelo Morales。1Password方面目前尚未公開回應這份重新分析。

人類的那條基準線

這篇文章更有說服力的部分,是它給出了對照組。Trail of Bits引用的資料顯示,開發者在理想條件下修補一個資安漏洞,第一次嘗試的失敗率約12.5%,八次裡錯一次。

有了這條基準線,「AI修不乾淨」這個判斷才有座標可言。26%的乾淨修復率單獨看像是不及格,但把86%擺在87.5%的人類基準線旁邊,故事就不一樣了:大致持平,還沒有超過。

Trail of Bits順帶公布了自家Patch the Planet專案的數字:186個PR送出,126個被上游合併,合併率67.7%;被合併的那些裡面,72.2%不需要再做資安修訂。這組數字的量尺跟基準測試不同,它測的是「修補能不能被真實維護者接受」,比單純擋下漏洞利用更貼近正式環境。

順手放出的兩項技能

文章末尾公布了兩項Agent技能:post-patch-validation讓Agent在送出修補前先自我測試與驗證,review-walkthrough則協助工程師按邏輯順序審視程式碼變更。

這兩項技能的存在本身就是對那份基準的回應。36%的測試被禁止編譯與測試,而Trail of Bits給出的第一項技能做的正是送出前驗證——等於是在說,修補品質有一大半取決於Agent有沒有機會自己檢查一遍。

開發團隊看這類基準時該注意什麼

這一年各家都在發AI修補漏洞的成績單,計分方式五花八門。這篇文章提供了一份可以照著用的檢查清單:樣本量有多少、有沒有刻意誤導的提示混在裡面、模型准不准編譯與測試、不同模型的推理設定是否一致、有沒有人類基準線可以對照。五項裡缺一項,公布的百分比就不能直接拿來當作選型依據。

對開發團隊更實際的一點是,這兩項技能已經公開釋出,接進既有的程式碼審查流程不需要等誰授權。至於接進去之後能提升多少,各家程式碼庫差異太大,目前沒有現成答案。

參考來源:Trail of Bits官方部落格、CocoLoop、1Password基準報告;四項方法學質疑、3067與2634這組修補計數、Patch the Planet的186/126合併數據皆以部落格原文為準。