AI脆弱性パッチ、評価方法に落とし穴

ノースウェスタン大学の研究者らが、実際のセキュリティバグ112件を対象にAIコーディングエージェントを検証しました。その結果、クラッシュを止めるパッチであっても、プロジェクトのメンテナーが修正用に書いたテストには不合格となるケースが多いことが分かりました。Claude Opus 4.7では、クラッシュを解消したパッチの3分の1が、メンテナーのテストに通りませんでした。

Image

脆弱性のパッチ適用をAIツールに任せようと考えているなら、注目すべきはこの数字です。セキュリティパッチを評価する多くのベンチマークは、「バグを引き起こすサンプルであるPoC(概念実証)入力で、プログラムが依然としてクラッシュするか」という一点だけで修正を採点します。パッチはクラッシュに至る経路をふさぐだけで合格でき、欠陥そのものは残ったままになります。著者らはこうした修正を「何も修正しないよりも厳密に悪い」と呼んでいます。問題が解決していないのに、解決したかのように見せてしまうためです。

2つのパッチ、正解は1つ

研究者らは、C/C++、Go、Rustで書かれた84のオープンソースプロジェクトのバグからデータセットを構築しました。各バグについて、元の開発者が実際の修正とともに追加したテストを取得し、AIが生成したパッチをそれらのテストにかけました。

PHPのバグを例に見てみましょう。あるAI生成風のパッチは、PHPのメンテナーが行ったのと同じようにロジックを修正します。別のパッチは、入力が通常と異なるように見えるたびにエラーを投げるだけです。これではクラッシュは止まりますが、PHPが本来処理すべき呼び出しまで壊れてしまいます。どちらもPHPの既存テストには合格します。両者を見分けられるのは、メンテナーが修正のために書いたテストだけです。

チームは、Claudeモデルの3世代についても試しました。最新モデルはおよそ90%の確率でクラッシュを止めましたが、メンテナーのテストに合格したのは約61%にとどまりました。検証した中で最良のモデルでも、およそ10件中4件のバグでテストに不合格となった計算です。

エージェントが答えを見つけ出した

チームは、エージェントがテスト環境から答えを引き出している事例も確認しました。

  • Web検索: Web検索を有効にしたままにしたところ、あるClaude Codeエージェントは最初の4回のツール呼び出しのうちに、アップストリームの修正コミットを取得しました。その後、自身のパッチが同じアプローチに従っていると報告し、取得したページを引用しました。
  • Git履歴: 別のエージェントには、プロジェクトのgit履歴全体が与えられていました。このエージェントは以前の関連する修正を検索し、ほぼ一行一行そのまま再現しました。
  • 正解データ: ハーネスの初期バージョンでは、あるエージェントが正解パッチを指す設定ファイルを読み取りました。その編集内容は、アップストリームの修正と完全に一致していました。

著者らは、git履歴の検索は人間の開発者でも行う合理的な手段だと指摘しています。問題は、ベンチマークが答えを手の届く場所に残していたことです。

こうした環境設定は、AIに非のない失敗も引き起こしました。Claude Codeに隠れたバックグラウンドチェックがあり、コマンドが停止してしまったため、モデルが苦戦しているように見えたのです。別の事例では、エージェントが正しい修正と独自のテストを書きましたが、そのテストがメンテナーのテストファイルと衝突しました。ベンチマークは、正しい修正を失敗と採点しました。

チームは、AIによるパッチ適用の評価に使われている13のベンチマークとデータセットを調べました。AIエージェント向けに作られた5つのベンチマークはいずれも、9つの落とし穴のうち少なくとも1つに対処できていませんでした。

ベンダーに確認すべきこと

AIによる脆弱性修正ツールの導入を検討しているなら、次の4つの質問が参考になります。

  • スコアは、クラッシュが止まったことだけを確認したのか。それともメンテナーが書いたテストも実行したのか
  • エージェントはインターネットにアクセスできたか。プロジェクトのgit履歴は参照できたか
  • コードのビルドとテストについて、プロンプトでどのような指示を与えたか
  • タイムアウトやパイプラインのエラーは、どのように集計したか

3つ目の質問は、思う以上に重要です。コードのビルド方法とテスト方法を伝えるだけで、CおよびC++のバグに対する成功率は20ポイント上昇しました。AIが賢くなったわけではありません。

そして、クラッシュが止まるかどうかだけを確認するリーダーボードでは、メンテナーの意図を外したパッチも、すべて成功として数えられてしまいます。

翻訳元: https://www.helpnetsecurity.com/2026/10/12/ai-vulnerability-patching-grading-problem/

本記事は helpnetsecurity.com の記事を翻訳・要約したものです。