ホームへ戻る

AI 資安工具

BUGSTONE-E2E、CVEの修正履歴をエージェントスキル化し、644件のソフトウェア欠陥に実行時エビデンスを生成

IBM Researchなどの研究者は、既知の脆弱性に対する修正差分を1,033件の実行可能な検出ルールへ変換し、階層型エージェントワークフローでスキャン範囲を絞り込んだ。このシステムは14本のプログラムにおける644件の検出結果について実行時エビデンスを生成したが、この数字は644件の新たなCVEが確認されたことを意味しない。

Simon Greig · CC BY 2.0 · Image source
zh-Hant

CVEデータベースには脆弱性の説明と修正へのリンクが保存されているが、セキュリティスキャナーが、修正コミットから読み取れるプログラムのセマンティクスを直接再利用することは通常ない。BUGSTONE-E2Eは、こうした過去の記録を実行可能なワークフローへ変換しようとするものだ。検証済みの修正コミットから、スキャン用アンカー、修正のセマンティクス、CVEの出典を抽出し、CWEとプログラミング言語ごとにルールとして整理する。研究チームは、2022年から2026年までの高深刻度CVE 19,325件から2,710件の修正コミットを特定し、1,033件のルールを生成したうえで、エージェントが利用できる172個のスキルとしてパッケージ化した。

実行段階では、最初からコードベース全体を高コストなモデルに渡すことを避けるため、ファネル型の設計を採用している。まずTree-sitterがAPIまたは構文アンカーに一致する呼び出し箇所を列挙し、軽量なヒューリスティックルールが明らかに安全なケースを除外する。LLMエージェントは残った候補だけを調べ、その後さらに振り分けを行い、実行可能な検証を構築する。最後に変更範囲を限定したパッチを生成し、パッチ適用前後の双方向差分テストによって挙動を確認する。論文によると、システムは評価対象となった14本のプログラムで、644件の検出結果について実行時エビデンスを生成した。モデルに脆弱性の説明だけを読ませる場合と比べ、このプロセスは出典、特定、再現、修正を監査可能なチェーンとして結び付けるとともに、大規模モデルのコストを難しい事例に集中させる。

大規模なC/C++、Java、または複数言語が混在するコードベースを保守するチームにとって注目すべきなのは、単一モデルの性能ではなく、「脆弱性の履歴をルールライブラリとして活用する」という手法の移植性だ。導入前には、CWEごとの偽陽性率、再現テストが実際に脆弱性へ到達しているか、さらにエージェントが生成したテストとパッチが同じ誤った仮定を共有していないかを測定する必要がある。現時点で644件という結果は、実行時エビデンスを伴う脆弱性候補とみなすべきにすぎない。論文は、独立した再現結果、完全に公開されたツールチェーン、またはその後のCVE認定をまだ提示していない。今後は、ルールがバージョンやプロジェクトをまたいで汎化できるか、そして実際のCIコストが従来の手作業による分析を下回るかを見極める必要がある。

出典

  1. The History Is the Detector: Executing CVE Patch History, End-to-End
  2. The History Is the Detector:研究訊號與技術摘要