Trail of Bitsは9月15日、1PasswordのAIパッチベンチマーク報告の結論には無理があるとする記事を公開した。1Passwordが公表した数字は「クリーンな修正率」26%。Trail of Bitsが同じデータセットで採点し直したところ、3067件のパッチのうち2634件が対応する攻撃を防いでおり、86%になった。
二つの数字の差は60ポイント。差が生まれた原因は採点方法にある。
指摘された4つの問題
Trail of Bitsが挙げたのは次の4点。
- サンプルが狭すぎる。ベンチマーク全体で使われた複雑な脆弱性はわずか6件で、それぞれの修正成功率は3%から60%まで大きくばらついている。この6件の平均値を「AIのパッチ能力」とするのは、サンプリングノイズが信号をかき消してしまうやり方だ。
- プロンプト自体に問題がある。データの22%は、あえてAgentを誤った修正へ誘導するプロンプトを使った試験から来ている。これらの試験が測っているのは、モデルが誤誘導されるかどうかであって、正しく修正できるかどうかではない。
- ツールが取り上げられている。36%の試験でモデルはコードのコンパイルやテストを許可されていない。人間の開発者が同じ条件で同じ脆弱性を修正しても、成績はそう良くならないだろう。
- 設定が揃っていない。モデルごとに異なる推論設定が使われており、スコア同士を横並びで比較できない。
記事の署名は4人、Anish Naik、Dan Guido、Benjamin Samuels、Marcelo Moralesの4人。1Password側はこの再分析に対して今のところ公式な反応を示していない。
人間側の基準線
この記事でより説得力があるのは、対照群を示している点だ。Trail of Bitsが引用したデータによると、開発者が理想的な条件でセキュリティ脆弱性を修正する場合、最初の試行での失敗率は約12.5%、8回に1回のミスにあたる。
この基準線があって初めて、「AIはきれいに修正できない」という判断に座標が生まれる。26%というクリーンな修正率は、単独で見れば落第点のように見える。だが87.5%という人間の基準線の隣に86%というAIのスコアを置くと、話は変わってくる。おおむね互角で、まだ上回ってはいない、という話になる。
Trail of Bitsは自社のPatch the Planetプロジェクトのデータも合わせて公表した。提出したプルリクエストは186件、そのうちアップストリームにマージされたのは126件、マージ率67.7%。マージされたパッチのうち、72.2%は追加のセキュリティ修正を必要としなかった。これはベンチマーク試験とは物差しが異なり、実際のメンテナーがパッチを受け入れるかどうかを測るもので、攻撃を防ぐだけよりも本番環境に近い指標だ。
ついでに公開された2つのスキル
記事の末尾では2つのAgentスキルも公開された。post-patch-validationはAgentがパッチを提出する前に自らテストと検証を行うもの、review-walkthroughはエンジニアがコードの変更を論理的な順序で確認できるようにするものだ。
この2つのスキルの存在自体が、あのベンチマークへの回答になっている。問題視された試験の36%ではコンパイルやテストが禁止されていたが、Trail of Bitsが公開した最初のスキルはまさに提出前の検証を行うものだ。つまり、パッチの品質の大部分は、Agentが自分の作業を確認する機会を与えられるかどうかにかかっている、ということになる。
この種のベンチマークを読むときに見るべき点
今年はAIによる脆弱性修正の成績表が各社から相次いで発表されているが、採点基準はまちまちだ。この記事は読者に使えるチェックリストを提供している。サンプル数はいくつか、誤誘導を狙ったプロンプトが混ざっていないか、モデルはコンパイルとテストを許可されているか、モデル間で推論設定は揃っているか、比較対象となる人間の基準線はあるか。この5点のうち一つでも欠けていれば、公表された割合をそのままツール選定の根拠にはできない。
より実務的な点を挙げるなら、この2つのスキルはすでに公開されており、誰の許可を待たずとも既存のコードレビューの流れに組み込める。組み込んだ後にどれだけの効果が出るかは、コードベースごとの差が大きく、まだ定まった答えはない。
参考資料:Trail of Bits公式ブログ、CocoLoop、1Passwordベンチマーク報告。4つの方法論的な指摘、3067件と2634件というパッチ集計、Patch the Planetの186件・126件というマージ実績は、いずれも元記事の記述に基づく。