Evaluating LLMs for Real-World Web Vulnerability Detection
本論文は、WordPressプラグインにおける現実世界のウェブ脆弱性を検出する能力について、6つのフロンティアおよびオープンウェイトの大規模言語モデルをベンチマークし、すべてのモデルが有効な問題を特定できる一方で、検出率はモデルやプロンプト設計によって大きく異なり、反復試行を通じて一貫した報告や完全な正確性を達成できるモデルは存在しないことを明らかにしている。
原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む
あなたは、ウェブサイトを構築するための膨大なデジタル「取扱説明書(コード)」のライブラリを持っていると想像してください。しかし、いくつかの説明書には隠れた罠があります。例えば、泥棒(ハッカー)が潜む地下室へと続く、床板の緩みのようなものです。これらの罠は**脆弱性(Vulnerability)**と呼ばれます。
長い間、これらの罠を見つけるには、専門のセキュリティガードのチームが、すべてのマニュアルの全ページを一つひとつ手作業で読み解く必要がありました。しかし最近、新しい種類の「超速読家」が登場しました。それが**大規模言語モデル(LLM)**です。これらは、人間と同じようにコードを読み、理解することができるAIシステムです。
この論文は、これら6種類の異なる「超速読家」が、WordPressのウェブサイトプラグイン(ウェブサイトに特別な機能を追加するアドオン)の中に隠れた罠をどれだけうまく見つけられるかをテストした**「成績表」**です。
以下に、彼らの実験とその結果を、簡単な比喩を用いて解説します。
1. 設定:「罠探し」
研究者たちは、実世界に存在する特定の罠(データベースに秘密を漏らすようにハッカーを欺く「SQLインジェクション」や、公開掲示板に偽のメモを注入するような「クロスサイトスクリプティング」など)が判明している、4つの人気のあるWordPressプラグインを選びました。
彼らは6つの異なるAIモデルに対し、セキュリティ監査官としての役割を与えました。彼らは一度きりの質問ではなく、同じ学生に3日間連続で同じテストを受けさせるように、一貫性を確認するためにテストを3回実行しました。
また、質問の仕方(プロンプト)も変えて試してみました:
- 「怠慢な」プロンプト: 単に「バグを見つけて」と言う。
- 「一般的な」プロンプト: 「あなたはセキュリティの専門家です。主要なタイプのバグをすべて見つけてください」と言う。
- 「具体的な」プロンプト: 「あなたはセキュリティの専門家です。特にこの特定の種類のバグを探してください」と言う。
2. 結果:誰がテストに合格したのか?
結果は、目覚ましい成功と、もどかしい不一致が混在していました。
- 優等生: 一つのモデル、Claude Opus 4.6 が最も優れた成績を収めました。このモデルは、既知の罠の約**63%**を見つけ出しました。最も信頼できる「探偵」でした。
- オープンソースのサプライズ: MiniMax M2.5 という、サブスクリプションなしで自分のコンピュータ上で実行できるモデル(他のモデルとは異なり)は、有料のトップモデルと同等の性能を発揮し、既知の罠の約**48%**を見つけました。これは、家庭料理が高級レストランの料理と同じくらい美味しいのと似ています。
- 苦戦したモデル: Qwen モデル(別のオープンソースの選択肢)は、約**35%**の罠しか見つけられませんでした。彼らは半分以上のケースで見落としてしまいました。
大きな教訓: 最善のAIであっても、約40%の罠を見逃しています。単独のAIが、すべてのプラグイン内のすべての罠を見つけ出すことはできませんでした。
3. 「魔法の質問」(プロンプト設計)
研究者たちは、どのAIを使うかよりも、「どのように質問するか」の方が重要であることを発見しました。
- 具体的である方が良い: もしAIに「SQLインジェクションを特別に探して」と伝えると、「何か間違っているところを探して」と言うよりも多くのバグを見つけました。これは、金属探知機の使い手に「金貨を探して」と伝えるのが、「何か金属のものを探して」と言うよりも効果的なのと似ています。
- 複雑さは役に立たない: AIに対して、長く複雑なステップバイステップの指示書を与えても、AIが賢くなることはありませんでした。シンプルで直接的な指示の方が、同様にうまく機能しました。
4. 「コイン投げ」の問題(一貫性)
これが最も驚くべき発見でした。AIは不安定だったのです。
同じAIに対して、同じコードについて同じ質問を3回行ったとしても、毎回異なる回答が返ってきました。
- ある時は、「罠を見つけました!」と言います。
- 次の時は、「すべて安全に見えます」と言います。
- その次は、「罠を見つけましたが、それは別のものです」と言うかもしれません。
Geminiというモデルだけが95%の確率で一貫した回答を出しましたが、同時に、見つけた罠の数が最も少ないモデルでもありました。優れたモデルほど、しばしば一貫性を欠き、まるでコイン投げの結果のように振る舞いました。これは、一度のスキャンだけでは信頼できないことを意味します。確実にするためには、スキャンを何度も実行する必要があります。
5. 「ゴースト・トラップ」(全員が見逃したもの)
「蓄積型クロスサイトスクリプティング(Stored Cross-Site Scripting)」というトリッキーな罠を持つ、ある特定のプラグインがありました。6つのAIのどれも、90回試行した後でもこれを見つけることができませんでした。
なぜでしょうか? その罠は、デフォルトでは有効になっていない非常に特殊な設定の背後に隠されていました。AIは「この設定がオンになっていないので、このコードは重要ではない」と判断し、スキップしてしまったのです。これは、AIが論理的な仮定を立てたものの、その仮定が間違っていたケースです。
6. これは従来のツールとどう違うのか?
研究者たちは、コードを従来のセキュリティスキャナー(Semgrep)にも通しました。これは、特定の形状に対してのみ反応する金属探達器のようなものです。
- 結果: 従来のスキャナーは、既知の罠をゼロしか見つけられませんでした。
- 教訓: AIは、これらの特定の現実世界の罠を見つけることにおいて、従来のツールよりもはるかに優れていましたが、それでもまだいくつかを見逃していました。
最終的な判定
論文は、AIは強力な助手ではあるが、人間のセキュリティ専門家の代わりにはならないと結論づけています。
- 機能する: AIは、ウェブサイトのコード内の実際かつ危険なバグを見つけることができます。
- 完璧ではない: バグの半分ほどを見逃し、頻繁に意見を変えます。
- 活用法: 最良の結果を得るには、トップクラスのモデル(Claudeなど)を使用し、具体的な質問(「SQLのバグを見つけて」)を与え、テストを何度も実行することです。
- 警告: AIのレポートをそのまま信じてはいけません。AIは時として「幻覚(ハルシネーション)」(存在しないバグをでっち上げる)を起こしたり、複雑な罠を見逃したりするため、人間が依然として結果をダブルチェックする必要があります。
要約すると、AIはあなたのウェブサイトの鎧にある穴を見つけるための素晴らしい新しい懐中電灯ですが、その懐中電灯を持ち、影をチェックし、壁が本当に安全であることを確認するためには、依然として人間が必要なのです。
自分の分野の論文に埋もれていませんか?
研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。