膨大な本のライブラリ(コード)があり、その中に隠されたあらゆる誤字、プロットの矛盾、あるいは危険な秘密を見つけ出さなければならないと想像してください。あなたには、この仕事のために2人の助け手がいます。
- ベテラン司書(Bandit): これは伝統的なツールです。彼は「思考」したり「想像」したりはしません。彼には、既知のミスに対する厳格に書き込まれたチェックリストがあります(例えば「裏口を開けっ放しにするな」や「錆びた錠前を使うな」など)。彼は素早く、整然と本をスキャンし、どこに問題があるかを正確に伝えてくれます。退屈ですが、信頼できます。
- クリエイティブなインターン(AIエージェント): これは新しい、洗練された大規模言語モデル(LLM)です。インターネット上のあらゆる知識を読み込んだ、優秀な学生のような存在です。チェックリストの代わりに、「危険そうなものを何でも見つけて」という職務記述書を与えられます。彼は想像力を使って、何が間違っている可能性があるかを推測します。
実験
研究者たちは、この2人を対決させることにしました。彼らはスキャンするために、3つの異なる「ライブラリ」(オープンソースソフトウェアプロジェクト)を与えました。
- 老朽化しているが頑丈なパッケージマネージャー(Yum)
- 個人の習慣トラッキングアプリ(Beaverhabits)
- 不適切なログイン試行をブロックするセキュリティツール(Fail2ban)
彼らは、まずベテラン司書にスキャンさせ、本当の問題の「ゴールドスタンダード(黄金律)」となるリストを作成させました。次に、クリエイティブなインターン(Gemma、Llama、Qwenという3つの異なるAIモデルを使用)に同じ仕事をさせました。
何が起きたのか?(結果)
結果は、クリエイティブなインターンにとって悲惨なものでした。以下は、簡単な比喩を用いた内訳です。
- 「幻覚(ハルシネーション)」の問題: インターンは、存在しない問題を次々と作り出しました。彼はごく普通のコードの一行を見て、「あ、これは秘密のパスワード漏洩だ!」と言いましたが、実際にはそれは標準的な設定に過ぎませんでした。論文では、これを**偽陽性(False Positive)**と呼んでいます。インターンはトラブルを見つけようと熱心になりすぎて、無害なものを危険だと判定してしまったのです。
- 比喩: それは、赤いリンゴを持っている人を「赤いものは危険だ」という理由で、爆弾を持っていると判断してしまう警備員のようなものです。
- 「場所を見失う」問題: インターンは、実際に問題を見つけたとしても、それが「どこにあるか」を教えることができないことがよくありました。彼は「コードの中にバグがあります」とは言いますが、「どのファイルですか?どの行ですか?」と尋せると、存在しないファイル名を捏造したり、空の行番号を指したりしました。
- 比喩: それは、探偵が「泥棒は家の中にいる」と言うものの、「どの部屋ですか?」と尋ねると、泥棒は実際には地下室にいるのに「屋根裏部屋だ」と推測するようなものです。
- 「機会損失」の問題: インターンは、ベテラン司書が見つけた実際の問題の大部分を見逃しました。彼は実際の問題の約25%しか捉えることができませんでした。
- 比喩: 司書が100個の誤字を見つけたとき、インターンはそれらのうち25個しか見つけられず、さらに彼が見つけたもののうち50個は、そもそも誤字ですらありませんでした。
- 「スピード」の問題: ベテラン司書は1分足らずで仕事を終えました。しかし、クリエイティブなインターンは、同じ作業を行うのに数時間(ライブラリごとに1〜4時間)かかりました。
- 比 Bezug: 司書は高速列車です。インターンは、線路沿いのすべての花を嗅ぎながら進むカタツムリです。
結論
論文は、現時点ではクリエイティブなインターンはベテラン司書の代わりにはなれないと結論付けています。
インターンは物語を書いたりメールを要約したりすることには長けていますが、セキュリティスキャンのような、具体的でリスクの高い仕事においては、現在あまりにも信頼性に欠けています。彼はあまりにも多くの「ノイズ(偽の警告)」を生み出し、多くの真の危険を見逃し、作業に時間がかかりすぎます。
研究者たちは、インターンを司書の「助手」として使うことは可能かもしれないと示唆しています。例えば、司書が見逃したものを特定させるなどの方法ですが、それは人間がインターンの推測をすべてチェックする場合に限られます。しかし、単独のツールとして古い信頼できる手法に取って代わるものとして使うことについては、論文は**「ノー」**と言っています。「幻覚(でたらめを言うこと)」と精度の欠如により、現在のセキュリティ業務を任せるにはリスクが高すぎるのです。
技術要約:オープンソースのLLMエージェントは静的アプリケーションセキュリティテスト(SAST)ツールを代替できるか?
問題提起
本論文は、エージェンティックAI(Agentic AI)、具体的には汎用的な大規模言語モデル(LLM)エージェントが、サイバーセキュリティの脆弱性スキャンにおいて、従来の静的アプリケーションセキュリティテスト(SAST)ツールを効果的に代替、あるいは匹敵することができるのかという、台頭する問いに取り組んでいる。生成AIはコード生成に革命をもたらしたが、著者らは、コードの「セキュリティ適合性」を検証する上でのその有効性を調査している。核心となる問題は、現代的なオープンソースの汎用LLMエージェントが、現実的な条件下でPythonコードベース内の一般的な脆弱性(例:SQLインジェクション、不適切なシークレット、パス・トラバーサル)を信頼性高く特定できるのか、それとも、確立されたルールベースのツールと比較して、固有の限界(ハルシネーション、高い誤検知率、説明可能性の欠如など)に苦しむのかを判断することである。
メソドロジー
本研究では、カスタム構築されたLLMエージェントと、検証済みのオープンソースSASTツールとの間の実証的な比較を行った。
- ベースライン・ツール: 低い誤検知率と中程度の精度で知られるPython特化型SASTツールであるBanditを、「正解(ソース・オブ・トゥルース)」および比較のためのベースラインとして使用した。
- 実験用エージェント: ディレクトリを再帰的にスキャンするように設計されたPythonベースのエージェント・アプリケーションであるSnitch。Snitchは、ローカルLLMのホスティングおよび実行にOllamaを活用している。
- 評価対象モデル: 以下の3つの異なるオープンソース汎用モデルをテストした:
- Gemma3 (Google): コーディング特化型としてマーケティングされている。
- Llama3.1 (Meta): 汎用LLM。
- Qwen2.5 (Alibaba): 推論、コーディング、デバッグを意図している。
- テスト対象: 複雑性と成熟度が異なる3つのオープンソースPythonリポジトリ:
- Yum: 引退したエンタープライズ級のパッケージマネージャー(高成熟度)。
- Beaverhabits: 個人の習慣トラッカー(カジュアルな商用)。
- Fail2ban: セキュリティ指向のサービスデーモン。
- 実験設計:
- Banditですべてのリポジトリを最初にスキャンし、MediumおよびHighレベルの検出結果のベースラインを確立した。
- 次に、Snitchが3つのモデルそれぞれを使用して、同じリポジトリをスキャンした(計9回のエージェントスキャン)。
- プロンプティング: すべてのエージェント実行に対して、特定のSAST問題を特定する専門のサイバーセキュリティエンジニアとして振る舞い、結果を構造化されたJSON形式で出力するよう指示する、固定された詳細なプロンプトを使用した。
- 評価指標:
- 再現率 (Recall): Banditが検出したMedium/Highレベルの検出結果のうち、エージェントによっても検出された割合(部分一致は0.5として重み付け)。
- 誤検知 (False Positive: FP) 率: エージェントがフラグを立てたものの、Banditによってフラグが立てられず、人間によるレビューの結果、文脈の誤解またはハルシネーションであると判断された割合。
- 複合スコア (Composite Score):
再現率 - FP率 として算出。
- 実行時間 (Execution Time): 効率性を比較するために記録。
主要な結果
実証データは、評価されたオープンソースのLLMエージェントが、従来のSASTツールと比較して大幅にパフォーマンスが劣っていることを示している。
- 低い再現率: いかなるモデルも、0.25を超える再現率を達成できなかった。エージェントはBanditが特定した脆弱性の大部分を見逃した。
- 高い誤検知率: すべてのモデルが、**40%から90%**に及ぶ極めて高い誤検知率を示した。
- 一般的なハルシネーションには、標準ライブラリの定数(例:
calendar.MONDAY)をハードコードされたシークレットとしてフラグを立てる、.env ファイルの使用をプロダクション環境への漏洩と誤解する、あるいは無害なコードパターン(コメントやライセンスヘッダーなど)を脆弱性と識別するといったケースが含まれる。
- Gemma3が最も高いFP率を示し、Qwen2.5が最も低かったものの、依然として相当なものであった。
- ハルシネーションと正確性:
- エージェントは、脆弱性の場所(ファイル名および行番号)を頻繁にハルシネーション(捏造)し、存在しないファイルやコードブロックを参照した。
- エージェントは時折、Banditが見逃した独自の課題(特定の不適切な
requests.get の使用やパス・トラバーサルなど)を特定したが、これらは外部の正解(グラウンドトゥルース)なしには検証不可能であり、ノイズによって相殺された。
- パフォーマンスと効率性:
- Banditは、リポジトリあたり1分未満でスキャンを完了した。
- Snitch(LLMエージェント)は、コードベースのサイズに応じて、リポジトリあたり1〜4時間を要した。
- 3つのモデルすべてにわたるエージェントスキャンの総実行時間は、Banditの数分に対し、約10〜12時間であった。
主な貢献
- 実証的評価: 本論文は、理論的な推測を超えて、精度、再現率、FP率といった測定可能なパフォーマンス指標を用いて、SASTにおけるエージェンティックAIの厳格なデータ駆動型評価を提供している。
- ベースライン比較: Banditを用いた直接的なパフォーマンス・ベースラインを確立し、汎用的なオープンソースLLMが現在のところ、専門的なセキュリティスキャニングタスクに必要な信頼性を欠いていることを実証した。
- 限界の特定: LLMエージェントにおける特定の失敗モード、特に脆弱性の場所に関する「ハルシネーション」や、標準的な開発パターン(環境変数など)をセキュリティ上の欠陥と誤解する現象を浮き彫りにした。
- 複合スコアの導入: 見逃された脆弱性とノイズ生成のトレードオフを包括的に評価するために、複合スコア(
Recall - FP Rate)を導入した。
意義と主張
本論文は、現代のオープンソースGenAI LLMベースのエージェントは、現在のところ、現実的な条件下でのSASTスキャニングという専門的なタスクには適していないと結論付けている。
- 信頼性のギャップ: 高い誤検知率と低い再現率は、これらのエージェントをスタンドアロンのセキュリティツールとして信頼できないものにしている。「ハルシネーション」による脆弱性の場所に関する情報は、開発者が特定のファイルや行番号を信頼できないため、自動的な修復(レメディエーション)のための出力としてはほぼ無価値である。
- 効率性の障壁: LLMエージェントに要する計算コストと時間(数分 vs 数時間)は、標準的なCI/CDパイプラインへの統合において、ルールベースのツールと比較して禁止的な障壁となっている。
- AIの役割: 著者らは、エージェンティックAIはコードの生成や支援においては有望な兆しを見せているが、現在は検証に必要な精度と説明可能性が不足していると指摘している。本論文は、一貫性、速度、および追跡可能性の観点から、従来のルールベースのツールの方がコード分析において優れていると論じている。
- 将来の展望: 著者らは、クローズドソースまたは高度なプロンプトエンジニアリングを備えた特化型モデルであれば、結果を改善できる可能性があると述べているが、生成システムの本質的な限界(ハルシネーション、CVE定義のような外部知識ベースの欠如)が、現在、確立されたSASTツールを置き換えることを妨げていると考えている。彼らは、エージェントが従来のツールの「置き換え」ではなく、新しい問題のみに焦点を当てる「補完」として機能するという、ハイブリッドなアプローチの可能性を示唆している。
毎週最高の AI 論文をお届け。
スタンフォード、ケンブリッジ、フランス科学アカデミーの研究者に信頼されています。
受信トレイを確認して登録を完了してください。
問題が発生しました。もう一度お試しください。
スパムなし、いつでも解除可能。
週刊ダイジェスト — 最新の研究をわかりやすく。登録