19の攻撃パターン、実際に何件検出されたか: 2,863サーバーの脅威マッチング結果
3,601件のスキャンデータを正規化した2,863の固有MCPサーバーに対し、19の攻撃パターンの脅威マッチングを実施。Shell RCE(187件)、Path Traversal(162件)、SSRF(146件)が上位を占め、484サーバー(16.9%)で具体的な脅威パターンが検出された。脆弱性分析シリーズ第2回。
用語
| 用語 | 意味 |
|---|---|
| 脅威マッチング | MCPサーバーの検査結果に対して、定義済みの攻撃パターンを照合し、該当する脅威を特定する処理 |
| 固有サーバー | 同一のMCPサーバーに対する複数回のスキャンを正規化し、重複を排除した単位(ServerIdentity) |
| 検出率 | 全固有サーバーのうち、特定の脅威パターンが検出されたサーバーの割合 |
| severity | 脅威の深刻度。LOW / MEDIUM / HIGH / CRITICAL の4段階 |
リード
前回(第1回)では、MCPサーバーの脅威を19の攻撃パターンと12のサーバー機能カテゴリに整理し、構造的な俯瞰を行った。しかし、そこで示したのは「どのような脅威が存在しうるか」という理論的なマッピングであり、「実際にどの程度検出されているか」という定量データは次回に持ち越していた。
本稿がその「次回」である。
3,601件のスキャンデータを正規化した2,863の固有MCPサーバーに対し、19の攻撃パターンの脅威マッチングを実施した結果を報告する。どの攻撃が最も多く検出され、どの攻撃がほとんど検出されないのか。理論的に「危険」とされていたものが実際にどの程度存在するのか。データがその答えを示す。
Key Findings
- 72.4%のサーバーが WARN または BLOCK 判定。2,863の固有サーバーのうち、安全と判定された PASS は785件(27.4%)にとどまる。
- Shell RCE が検出数1位(187件、6.5%)。コード実行系の脅威が最も広く存在する。Path Traversal(162件)、SSRF(146件)が続く。
- MCP固有の攻撃が4位以降に集中。Prompt Injection、PleaseFix Attack、Function Hijacking がそれぞれ134件で並ぶ。これらは従来のセキュリティツールでは検出できない。
- 484サーバー(16.9%)で具体的な脅威パターンが検出。残りのWARN/BLOCKサーバーは、脅威パターン以外のリスク要因(権限の過剰要求、出所の不透明性など)で検出されている。
- 19パターンのうち16が実検出。Tool Name Collision、Supply Chain、Rug Pull の3パターンは現時点で0件だが、これは脅威が存在しないことを意味しない。
- 検出されたサーバーの最高severity(深刻度)はHIGHが392件で最多。CRITICAL判定は現時点で0件。
調査方法
データセット
| 項目 | 値 |
|---|---|
| スキャン実施数 | 3,601件 |
| 正規化後の固有サーバー数 | 2,863件 |
| 脅威マッチング対象 | 19の攻撃パターン |
| 分析基準日 | 2026年4月 |
3,601件のスキャンデータには、同一サーバーに対する複数回のスキャンが含まれる。本分析では、各固有サーバー(ServerIdentity)の最新スキャン結果を使用し、重複を排除した。
脅威マッチングの仕組み
脅威マッチングは、スキャンで検出されたサーバーの操作特性を、定義済みの攻撃パターンと照合する処理である。具体的には、サーバーが実際に行う操作の種類(ファイル読み書き、ネットワーク通信、コマンド実行など)を識別し、その操作に関連する脅威パターンを紐づける。
重要な前提として、脅威マッチングは「その攻撃が実行された」ことではなく、「その攻撃が成立しうる条件が存在する」ことを意味する。検出は潜在的リスクの指標であり、実際の攻撃の証拠ではない。
スキャン結果の全体像
2,863の固有サーバーに対するスキャン結果の分布は以下の通りである。
| 判定 | 件数 | 割合 | 意味 |
|---|---|---|---|
| WARN | 1,811 | 63.2% | 潜在的なリスクが検出された |
| PASS | 785 | 27.4% | 重大な問題は検出されなかった |
| BLOCK | 263 | 9.2% | 重大なリスクが検出され、使用が推奨されない |
| OTHER | 8 | 0.3% | スキャンエラー等 |
前回報告した「詳細検査の70%で警告以上」という数値は、本分析でも 72.4%(WARN + BLOCK)として再確認された。
BLOCK 判定の重み
263件のBLOCK判定は、全体の9.2%を占める。これは「10件に1件のMCPサーバーは、検査段階で使用を推奨できないレベルの問題が検出される」ことを意味する。BLOCKと判定されるサーバーは、重大な脆弱性パターン(Shell RCEやData Exfiltration等)が複合的に検出されているケースが多い。
攻撃パターン別の検出分布
以下の表は、19の攻撃パターンそれぞれについて、実際に検出された固有サーバーの件数を示す。
| 順位 | 攻撃パターン | カテゴリ | 検出サーバー数 | 検出率 |
|---|---|---|---|---|
| 1 | Shell RCE | A: コード実行 | 187 | 6.5% |
| 2 | Path Traversal | A: コード実行 | 162 | 5.7% |
| 3 | SSRF | B: データ窃取 | 146 | 5.1% |
| 4 | Insecure Plugin Design | D: 権限悪用 | 137 | 4.8% |
| 5 | Prompt Injection | C: MCP固有 | 134 | 4.7% |
| 5 | PleaseFix Attack | C: MCP固有 | 134 | 4.7% |
| 5 | Function Hijacking | C: MCP固有 | 134 | 4.7% |
| 8 | Data Exfiltration | B: データ窃取 | 115 | 4.0% |
| 9 | Indirect Theft | C: MCP固有 | 114 | 4.0% |
| 10 | MITM | B: データ窃取 | 72 | 2.5% |
| 10 | DNS Rebinding | B: データ窃取 | 72 | 2.5% |
| 12 | Argument Injection | A: コード実行 | 62 | 2.2% |
| 13 | Clawdrain | D: 権限悪用 | 16 | 0.6% |
| 14 | OAuth Scope Abuse | D: 権限悪用 | 4 | 0.1% |
| 15 | Unicode Injection | E: サプライチェーン | 2 | 0.1% |
| 15 | Tool Poisoning | C: MCP固有 | 2 | 0.1% |
| — | Tool Name Collision | C: MCP固有 | 0 | 0.0% |
| — | Supply Chain | E: サプライチェーン | 0 | 0.0% |
| — | Rug Pull | E: サプライチェーン | 0 | 0.0% |
合計: 16パターンが実検出。484の固有サーバーで延べ13,479件の脅威マッチが発生。1サーバーあたり平均27.8件。
カテゴリ別の傾向分析
カテゴリA: コード実行・システムアクセス系 — 検出数上位を独占
| パターン | 件数 |
|---|---|
| Shell RCE | 187 |
| Path Traversal | 162 |
| Argument Injection | 62 |
| 小計 | 411 |
コード実行系の3パターンが合計411件で、全検出の約3割を占める。Shell RCE が最多である事実は、MCPサーバーがコマンド実行機能を持つことの多さを反映している。
Shell RCE と Path Traversal が上位2つを占める構造は、MCPサーバーの基本的な設計パターンに起因する。MCPサーバーの多くは、ファイルシステム操作やプロセス実行をAIエージェントに提供することを目的としており、これらの機能は本質的に Shell RCE や Path Traversal のリスクと隣り合わせである。
カテゴリB: データ窃取・通信介入系 — ネットワーク通信の普遍性
| パターン | 件数 |
|---|---|
| SSRF | 146 |
| Data Exfiltration | 115 |
| MITM | 72 |
| DNS Rebinding | 72 |
| 小計 | 405 |
カテゴリAとほぼ同規模の405件。ネットワーク通信を行うMCPサーバーの数が多いことを示している。
SSRF が146件で3位に入った点は注目に値する。MCPサーバーが外部APIを呼び出す設計の場合、そのサーバー自体が内部ネットワークへの踏み台になりうる。特にクラウド環境のメタデータエンドポイント(169.254.169.254)へのアクセスが成立すると、認証情報の窃取に直結する。
MITM と DNS Rebinding が同数(72件)で並ぶのは、両者がネットワーク通信の安全性という同じ基盤に依存しているためである。TLS検証を無効化しているサーバーは、MITMとDNS Rebindingの両方に同時に晒される。
カテゴリC: AI/MCP固有 — 新しい脅威の実在
| パターン | 件数 |
|---|---|
| Prompt Injection | 134 |
| PleaseFix Attack | 134 |
| Function Hijacking | 134 |
| Indirect Theft | 114 |
| Tool Poisoning | 2 |
| Tool Name Collision | 0 |
| 小計 | 518 |
カテゴリCの合計518件は、全カテゴリ中で最大である。これは、MCP固有の脅威が理論上の概念ではなく、実際に多数のサーバーで検出される現実的な問題であることを示している。
Prompt Injection、PleaseFix Attack、Function Hijacking が同数(134件)で並ぶ構造は、これらの脅威が共通の条件下で成立することを示唆している。具体的には、AIエージェントとの対話インターフェースを持つサーバーは、この3つの脅威に同時に晒される傾向がある。
Tool Poisoning の検出が2件にとどまった点は、攻撃の実行には意図的なツール定義の改竄が必要であり、偶発的に発生するリスクではないことを反映している。ただし、検出数が少ないことはリスクが低いことを意味しない。1件の Tool Poisoning が成功した場合の影響は、Shell RCE と同等かそれ以上に深刻である。
カテゴリD: 権限・リソース悪用系
| パターン | 件数 |
|---|---|
| Insecure Plugin Design | 137 |
| Clawdrain | 16 |
| OAuth Scope Abuse | 4 |
| 小計 | 157 |
Insecure Plugin Design が137件で4位に入った。プラグイン機構を持つサーバーで権限境界が弱い設計が広く存在することを示している。
Clawdrain(リソース枯渇)は16件と少数だが、AIエージェントがループ実行する環境では1件のClawdrainが大規模なコスト爆発を引き起こす可能性がある。検出数の少なさは、この脅威の検出条件が特殊であることを反映している(無制限のAPI呼び出しや明示的なループ構造が必要)。
カテゴリE: サプライチェーン・持続性 — 時間軸の壁
| パターン | 件数 |
|---|---|
| Unicode Injection | 2 |
| Supply Chain | 0 |
| Rug Pull | 0 |
| 小計 | 2 |
カテゴリEの検出数が極めて少ない理由は明確である。Supply Chain と Rug Pull は、時間経過に伴う変化を検出する脅威パターンであり、単一時点のスキャンでは構造的に検出できない。
Supply Chain 攻撃の検出には、依存パッケージの過去バージョンとの差分分析が必要であり、Rug Pull の検出にはソースコードのハッシュ変更を時系列で追跡する必要がある。これらは定期的な再スキャンと差分監視によって初めて検出可能となる。
検出数0件は「この脅威が存在しない」ことを意味しない。検出メカニズムの構造的限界を示しているにすぎない。
深刻度の分布
脅威マッチングが1件以上あった484サーバーについて、最高severity(深刻度)の分布は以下の通りである。
| Severity | 件数 | 割合 |
|---|---|---|
| HIGH | 392 | 81.0% |
| MEDIUM | 92 | 19.0% |
脅威が検出されたサーバーの81%がHIGH判定を受けている。これは、検出されるパターンの多くが Shell RCE や Data Exfiltration など、成立した場合の影響が大きい脅威であることを反映している。
CRITICAL 判定が0件である点は、検出された脅威が「攻撃が成立しうる条件の存在」であり「攻撃の実行が確認された」わけではないことと整合する。実際に攻撃が確認された場合には、CRITICAL として分類される設計になっている。
WARN/BLOCK と脅威マッチングのギャップ
本分析で注目すべき構造的な特徴がある。
- WARN + BLOCK のサーバー: 2,074件(72.4%)
- 脅威パターンが1件以上検出されたサーバー: 484件(16.9%)
- ギャップ: 1,590件(55.5%)
このギャップは、WARN/BLOCK 判定が脅威パターンマッチングだけでなく、以下の要因を総合して行われていることを意味する:
- 操作権限の過剰要求: 機能に対して不必要に広い権限を要求する設計
- 出所の不透明性: ソースURLの不在、パッケージレジストリとの不一致
- 宣言と実装の乖離: ツール定義と実際の操作の不整合
- セキュリティプラクティスの不足: TLS未使用、入力バリデーション欠如
つまり、特定の攻撃パターンに一致しなくても、セキュリティの観点から問題のあるサーバーが大量に存在する。脅威マッチングは氷山の一角であり、その下にはより広範なリスク要因が存在している。
本シリーズの構成
| 回 | テーマ | 状態 |
|---|---|---|
| 1 | 全体俯瞰: 脅威構造 × サーバー機能分類 | 公開済 |
| 2 | 攻撃パターン別の実検出分布(本稿) | 本稿 |
| 3 | サーバー機能別リスクプロファイル | 次回 |
| 4 | コード実行系サーバーの深掘り | 予定 |
| 5 | AI/MCP固有攻撃の最前線 | 予定 |
次回予告: 第3回では、サーバーが提供する機能(ファイル操作、API連携、コード実行など)のカテゴリ別に、検出される脅威パターンの傾向を分析する。どの機能カテゴリのサーバーが最もリスクが高く、機能の組み合わせがリスクにどのような影響を与えるかを定量的に示す。
限界
- 本分析は2,863の固有サーバー(3,601スキャンから正規化)を対象としており、MCPエコシステム全体を網羅するものではない。
- 脅威マッチングは「攻撃が成立しうる条件の存在」を検出するものであり、「攻撃が実行された」証拠ではない。
- Supply Chain、Rug Pull の0件検出は、脅威の不在ではなく、単一時点スキャンの構造的限界を反映している。
- 検出率は検査ルールの網羅性に依存する。検査対象外のパターンは検出されない。
- サーバー機能カテゴリとの詳細なクロス分析は、第3回で報告する。
Conclusion
2,863の固有MCPサーバーに対する脅威マッチングの結果、19の攻撃パターンのうち16が実際に検出された。Shell RCE(187件)、Path Traversal(162件)、SSRF(146件)が上位3つを占め、コード実行とネットワーク通信に関わる伝統的なセキュリティ脅威が最も広く存在することが確認された。
同時に、MCP固有の脅威カテゴリ(Prompt Injection、PleaseFix Attack、Function Hijacking、Indirect Theft)の合計518件は全カテゴリ中最大であり、AI/MCPプロトコル特有の脅威が理論上の懸念ではなく、検出可能な現実であることを示している。
72.4%のサーバーがWARN以上と判定される一方で、具体的な脅威パターンマッチは16.9%にとどまる。このギャップは、MCPサーバーのリスクが特定の攻撃パターンだけでなく、設計・実装・運用の広範な問題から生じていることを示している。
MCP Guard は19の攻撃パターンを176以上の検査項目で監視し、MCPサーバーの安全性を多角的に評価します。
