OWASP MCP Top 10を実務に落とす:10リスク×MCP仕様・実例・最初の対策【MCPセキュリティ 2026年版】
OWASP MCP Top 10(2025年版・ベータ)を1項目ずつ実務目線で解説。MCP仕様2026-07-28版のどの規定が対応し、どこが空白か、項目ごとの実例、担当の分け方、LLM/Agentic Top 10との対応表、30分でできる20点満点の自己診断まで。
最終更新:2026年10月20日 / 対象:OWASP MCP Top 10(2025年版・ベータ)、MCP仕様 2026-07-28版(Security Best Practices、Tools)、OWASP Top 10 for LLM Applications 2025、OWASP Top 10 for Agentic Applications 2026
結論(30秒で読める要約)
OWASP MCP Top 10とは、Model Context Protocol(MCP)を使うシステムに特有の重大なセキュリティリスク10項目を、OWASPがまとめたリストです。トークンの管理不備(MCP01)から、コンテキストの過剰共有(MCP10)までを扱います。現行の項目には「2025」と付いていますが、プロジェクトはまだベータ版です。正式版までに項目名や表現が変わる可能性があります。
MCPセキュリティの実務で使うなら、押さえておきたいのは次の4点です。多くの解説記事はここまで書いていません。
- MCPの仕様だけでは10項目をカバーしきれません。2026-07-28版の仕様と突き合わせると、MUSTレベルの規定があるのは4項目(MCP01、MCP03の一部、MCP05、MCP07)です。4項目(MCP02、MCP04、MCP06、MCP08)は主にSHOULDや推奨にとどまります。MCP04にはインストール時の同意だけMUSTがあります。残る2項目(MCP09のシャドーMCPサーバー、MCP10の過剰共有)は限定的なSHOULDしかなく、ほぼ組織側で対策することになります(3章)。
- 10項目すべてに、すでに公開された実例があります。名前をまねたnpmパッケージが全メールをBCCで外部へ送った事例(MCP04)、SaaSベンダーのMCPサーバーの不具合で約1,000社の顧客データが他組織から見えうる状態になった事例(MCP10)、数百のMCPサーバーが全ネットワークインターフェースで待ち受けていた調査(MCP09)などです。4章に項目ごとの実例をまとめました。
- 担当者は役割ごとに分かれます。社内SaaSをMCPで公開し、APIトークンを配っているチームなら、MCP01・MCP02・MCP05・MCP07・MCP08は自分たちの担当です(5章)。
- まずは被害範囲を小さくする3つから着手します。ツール単位のスコープ(MCP02)、設定ファイルやログにトークンを残さないこと(MCP01)、すべてのリモートサーバーの前に認証を置くこと(MCP07)です。7章に、10項目を30分で採点できる自己診断表を用意しました。
目次
- OWASP MCP Top 10とは
- 10項目の一覧
- MCP仕様(2026-07-28版)との対応
- 項目ごとの詳細:実例と最初の対策
- どの役割が、どのリスクを担当するか
- OWASP LLM Top 10(2025)・Agentic Top 10(2026)との対応
- 30分でできる自己診断(20点満点)
- よくある誤解(誤解→問題点→対処)
- NodeFlareならこう解決できる
- よくある質問(FAQ)
1. OWASP MCP Top 10とは
OWASP MCP Top 10とは、MCPで構築されたシステムの重大なセキュリティリスクを、攻撃シナリオ・対策・検知のサインとあわせて整理したOWASPのプロジェクトです。Webアプリケーションにおける「OWASP Top 10」のMCP版にあたり、認証を取るための規格ではなく、チーム内で共通の言葉としてリスクを話すための枠組みです。
引用する前に知っておきたい事実は次の4つです。
| 項目 | 内容(2026年10月20日時点) |
|---|---|
| 項目の表記 | MCP01:2025 〜 MCP10:2025 |
| ステータス | ベータ版。ロードマップ上は「ベータ版の公開」段階で、次のステップが正式版の公開 |
| プロジェクトリーダー | Vandana Verma Sehgal |
| 名称のずれ | 一覧ページではMCP06を「Prompt Injection via Contextual Payloads」と表記していますが、項目ページのタイトルは「Intent Flow Subversion」です。どちらも同じリスクを指します |
ベータ版なので、社内資料などで引用するときは MCP04:2025 のように年まで付けて書き、どの版を指しているかが分かるようにしておくと安全です。
2. 10項目の一覧
10項目は大きく3つに分けられます。認証情報と権限のリスク(MCP01、MCP02、MCP07)、モデルが読むコンテンツ経由で入ってくるリスク(MCP03、MCP06、MCP10)、ソフトウェアと運用のリスク(MCP04、MCP05、MCP08、MCP09)です。
| ID | 名称 | ひとことで言うと | 主な担当 |
|---|---|---|---|
| MCP01 | Token Mismanagement & Secret Exposure(トークン管理の不備とシークレットの露出) | トークンやシークレットが設定ファイル・ログ・モデルのコンテキストから漏れる | サーバー開発者・運用者 |
| MCP02 | Privilege Escalation via Scope Creep(スコープの拡大による権限昇格) | 狭かった権限が少しずつ広がり、気づけばエージェントが管理者権限を持っている | 運用者 |
| MCP03 | Tool Poisoning(ツールポイズニング) | 改ざんされたツール定義やスキーマが、モデルを有害な呼び出しへ誘導する | サーバー開発者(検知はクライアント側) |
| MCP04 | Software Supply Chain Attacks & Dependency Tampering(サプライチェーン攻撃と依存関係の改ざん) | 侵害されたパッケージ・プラグイン・イメージがエージェントの挙動を変える | サーバーを導入するすべての人 |
| MCP05 | Command Injection & Execution(コマンドインジェクション) | 信頼できない入力がシェルコマンド・SQL・コード実行に流れ込む | サーバー開発者 |
| MCP06 | Intent Flow Subversion(意図フローの乗っ取り) | 取得したコンテンツに隠れた指示が、エージェントをユーザーの目的から引き離す | クライアント・エージェント開発者 |
| MCP07 | Insufficient Authentication & Authorization(認証・認可の不備) | 呼び出し元が誰か、何をしてよいかを確認していない | サーバー開発者・運用者 |
| MCP08 | Lack of Audit and Telemetry(監査ログとテレメトリの欠如) | エージェントが何をしたか、構造化された改ざん検知可能な記録がない | 運用者 |
| MCP09 | Shadow MCP Servers(シャドーMCPサーバー) | 承認を受けていないMCPサーバーが、セキュリティ管理の外で動いている | セキュリティ・基盤チーム |
| MCP10 | Context Injection & Over-Sharing(コンテキストの注入と過剰共有) | 共有メモリやコンテキストを通じて、ユーザー・エージェント・テナントの間でデータが漏れる | エージェント開発者・SaaSベンダー |
3. MCP仕様(2026-07-28版)との対応
MCPの仕様は、Top 10の一部にはMUSTの規定で応えていますが、SHOULDの推奨にとどまる項目や、ほとんど触れていない項目もあります。この差を知っておくと、「仕様どおりに実装しています」がどこまでセキュリティの根拠になるかが分かります。
| OWASPの項目 | MCP仕様 2026-07-28版で最も近い規定 | レベル | 仕様が利用者に任せていること |
|---|---|---|---|
| MCP01 | Token Passthrough:サーバーは自分宛てに発行されていないトークンを受け入れてはならない | MUST NOT | クライアント設定でのシークレットの置き場所、保管庫、ローテーション |
| MCP02 | Scope Minimization:最小限のスコープから始め、WWW-Authenticate のscopeで必要なときだけ昇格する。* や full-access のようなワイルドカードは避ける |
推奨 | スコープとツールの対応づけ、権限の定期見直し |
| MCP03 | Tools:クライアントは、信頼できるサーバー以外のツールアノテーションを信頼できないものとして扱わなければならない | MUST(範囲は限定的) | 改ざんされた説明文の検知、ツール定義の固定 |
| MCP04 | Local MCP Server Compromise:ワンクリック導入では実行するコマンドを省略せずに表示し、承認を得る。クライアントはサンドボックスで実行すべき | 同意はMUST、サンドボックスはSHOULD | 署名、来歴(provenance)、SBOM、バージョン固定 |
| MCP05 | Tools:サーバーはすべてのツール入力を検証する。OAuth URL Validation:クライアントはシェル経由でURLを開いてはならない | MUST | ツール内部での安全なコマンド組み立て |
| MCP06 | Tools:ツールの実行を拒否できる人間を常に介在させるべき | SHOULD | 目的の固定、ポリシーによるチェック、ツール出力をデータとして扱うこと |
| MCP07 | Confused Deputy(クライアントごとの同意がMUST)、Token Passthrough(MUST NOT)、State Handle Hijacking(状態ハンドルを持っていることを認証とみなしてはならない) | MUST | そもそも認証を必須にするかどうか |
| MCP08 | Tools:クライアントは監査のためにツールの利用を記録すべき | SHOULD(クライアント側のみ) | サーバー側の監査ログ、保管期間、改ざん検知 |
| MCP09 | ローカルサーバーはstdioを使うか、HTTPならトークンやUnixドメインソケットでアクセスを制限すべき | SHOULD | 台帳管理、登録制、検出スキャン |
| MCP10 | 状態ハンドルは、認証済みユーザーとサーバー側で結びつけるべき | SHOULD(範囲は限定的) | メモリ・ベクトルストア・キャッシュのテナント分離 |
ここから分かることは2つです。1つ目は、MCPでは認可(Authorization)が任意なので、「仕様準拠」と「認証あり」は別の話だということ。2つ目は、MCP04・MCP09・MCP10は主に組織の運用で防ぐもので、プロトコルの改訂を待っても解決しないということです。
4. 項目ごとの詳細:実例と最初の対策
各項目について、OWASPの定義、公開された実例を1つ、そして最初に入れるべき対策を1つ挙げます。実例の内容は、出典に書かれている範囲にとどめています。
MCP01:トークン管理の不備とシークレットの露出
概要:OWASPは、トークンや認証情報を「モデル・ツール・サーバーの間の認証と認可の主な手段」と位置づけ、それがモデルのメモリやプロトコル層、ログに残る危険を指摘しています。シナリオとして、生のMCPペイロードを含むデバッグログからトークンが盗まれる例や、以前のセッションで使ったキーをモデルが答えてしまう例が挙がっています。
実例・根拠:MCP仕様のAuthorizationのセキュリティ考慮事項も、サーバーにキャッシュやログとして残ったトークンは攻撃者に再利用され、正規のリクエストに見えてしまうと警告しています。OWASPが検知のサインの最初に挙げているのは、MCPのクライアント・サーバー・ツールの設定にトークンが直書きされている状態です。
最初の対策:シークレットを3か所に置かないことです。クライアントの設定ファイル(クライアントのシークレット保管機能や環境変数で注入する)、サーバーのイメージやビルドログ(実行時に注入する)、そしてログ(引数はキー名だけを記録し、値は残さない)。そのうえで、トークンを短命にし、呼び出し元ごとにスコープを絞ります。
MCP02:スコープの拡大による権限昇格
概要:OWASPは、「エージェントやツールに一時的または限定的に与えた権限が、時間とともに広がること」をスコープクリープと呼んでいます。誰も意図して管理者権限を渡したわけではなく、テスト用に付けた権限を外し忘れたり、複数チームで共有するサービスアカウントに権限が積み重なったりして起こります。
実例・根拠:2025年5月、Invariant Labsは、悪意のある公開Issueを読んだエージェントが、GitHub MCPサーバー経由で非公開リポジトリのデータを漏らしうることを示しました。インジェクションが情報漏えいにまでつながったのは、エージェントの権限がその作業に必要な範囲より広かったためです。
最初の対策:呼び出し元ごと・用途ごとに1つの認証情報を発行し、スコープをツール名で定義します(例:create_issue は許可し、delete_repo は許可しない)。スコープが広がったときにはアラートを出します。仕様のScope Minimizationも、scopes_supported にすべてのスコープを載せることやワイルドカードスコープを、よくある間違いとして挙げています。
MCP03:ツールポイズニング
概要:ツールの名前・説明文・スキーマを改ざんし、無害に見える呼び出しで有害な処理を行わせる攻撃です。OWASPは、侵害されたCIパイプラインが悪意あるスキーマを公開するケースや、通信経路でスキーマを書き換える中間者攻撃をシナリオに挙げています。
実例・根拠:CVE-2025-54136(通称「MCPoison」)では、Cursor 1.2.4以前で、一度信頼したMCP設定が再確認なしに別のコマンドへ差し替えられる状態でした。Cursor 1.3で修正されています。
最初の対策:サーバーごとに tools/list の結果のハッシュを取って固定し、変化したら再承認を求めます。readOnlyHint などのアノテーションは、仕様の定めどおり「ヒント」として扱います。検知と封じ込めの詳細はMCPツールポイズニング対策ガイドで解説しています。
MCP04:サプライチェーン攻撃と依存関係の改ざん
概要:OWASPは、侵害された依存関係がエージェントの挙動を変えたり、隠れたバックドアを仕込んだりしうること、そしてコンポーネントが正規のものに見えるため気づかれにくいことを警告しています。シナリオには、トロイの木馬化したアップデート、名前をまねたタイポスクワッティング、レジストリの改ざん、依存関係の取り違え(dependency confusion)が含まれます。
実例・根拠:2025年9月、Postmark公式ライブラリの名前をまねた postmark-mcp というパッケージがnpmに公開されました。バージョン1.0.16で追加されたたった1行により、送信されるすべてのメールが攻撃者のアドレスへBCCされていました。Koi Securityが報告した時点で、累計ダウンロード数は1,643でした。
最初の対策:サーバーはバージョンを固定して導入し(npx や uvx で最新版をそのまま実行しない)、公開者とソースリポジトリが一致しているかを確認し、アップデート前には差分を読みます。サードパーティ製のサーバーはサンドボックスとEgressの許可リストの中で動かし、悪意あるアップデートが外部へ通信できないようにします。
MCP05:コマンドインジェクション
概要:OWASPは、「AIエージェントがシステムコマンドを組み立てて実行する」際に、信頼できない入力が検証されないまま混入するリスクとしています。引数を書くのはモデルなので、攻撃者はモデルが読むテキストに影響を与えるだけで済みます。
実例・根拠:mcp-remote のCVE-2025-6514(0.0.5以上0.1.16未満、CVSS 3.1:9.6)では、信頼できないMCPサーバーに接続すると、細工された authorization_endpoint によってOSコマンドを実行される可能性がありました。現在の仕様は、認可URLをシェルコマンドで開いてはならない(MUST NOT)と定めています。
最初の対策:ツールの引数からシェルの文字列を組み立てないことです。決まったコマンドに構造化された引数を渡し、SQLはパラメータ化し、メタ文字は拒否します。コードを実行する処理は、それ専用の短命なサンドボックスで動かします。
MCP06:意図フローの乗っ取り(Intent Flow Subversion)
概要:OWASPは、取得したコンテキストに埋め込まれた悪意ある指示によって、エージェントが一見タスクをこなしているように見せながら、ユーザーの目的から外れた行動をとるリスクと定義しています。エージェントの計画ループから見た、間接プロンプトインジェクションです。
実例・根拠:CVE-2025-54135(通称「CurXecute」)では、Cursor 1.3.9未満で、間接プロンプトインジェクションによって承認なしに新しい .cursor/mcp.json が作られ、コード実行につながる可能性がありました。
最初の対策:モデルの中で完全に防ぐことはできないため、被害を封じ込めます。書き込み・削除・外部送信には人間の承認を必須にし、タスクに合わない呼び出し(読み取り専用のレビュー中の削除など)はブロックし、1つのセッションに「非公開データ」「信頼できないコンテンツ」「外部への送信経路」の3つをそろえないようにします。
MCP07:認証・認可の不備
概要:OWASPは、MCPサーバー・ツール・エージェントが身元の確認やアクセス制御を正しく行わないことで起きるリスクとしています。固定トークンの再利用や、テスト用エージェントが本番と同じ権限を持っているケースがシナリオに挙がっています。
実例・根拠:MCP Inspector 0.14.1未満のCVE-2025-49596(CVSS 4.0:9.4)は認証の欠落によるもので、認証なしのリクエストからstdio経由でMCPコマンドを起動できました。
最初の対策:すべてのリモートサーバーの前に認証を置き、トークンが自分のサーバー宛てに発行されたもの(audience)かを検証し、リクエストごとに認可を確認します。開発・テスト・本番で認証情報を分け、状態ハンドルやセッションIDを本人確認の代わりにしないことも重要です。
MCP08:監査ログとテレメトリの欠如
概要:OWASPは、エージェントの活動が構造化・集約された形で記録されていない状態を脆弱性として挙げ、改ざん検知可能な保管と、ログ削除時の二者承認を求めています。
実例・根拠:MCPに組み込まれたLogging機能(notifications/message)は2026-07-28版で非推奨になり、クライアントが求めたときにしか送られません。監査ログの代わりにはなりません。
最初の対策:ゲートウェイかサーバーで、401・403・429も含めたすべてのリクエストを記録します。記録する項目は、呼び出し元のID、送信元IP、ツール名、引数のキー名、結果などです。保管期間は、キーの漏えいに気づくまでにかかる期間より長くします。
MCP09:シャドーMCPサーバー
概要:OWASPは、シャドーMCPサーバーを「承認または監督されていないMCPの導入」と定義しています。開発者やデータサイエンティストが立てたもので、初期パスワードのままだったり設定が甘かったりすることが多いとされます。
実例・根拠:2025年6月25日、Backslash Securityは、全ネットワークインターフェース(0.0.0.0)で待ち受ける公開MCPサーバーを「数百件」確認したと報告し、これをNeighborJackと名付けました。ホスト上で任意のコマンドを実行できるサーバーも「数十件」あったとしています。
最初の対策:組織内で動いているMCPサーバーの台帳を作り、認証が最初から有効な「公式の立て方」をチームに用意し、/mcp のようなMCPらしいパスで待ち受けるサービスをスキャンします。ローカルで使うサーバーは、仕様の推奨どおりstdioにします。
MCP10:コンテキストの注入と過剰共有
概要:コンテキストの注入は、共有メモリに悪意あるコンテンツを仕込む攻撃です。過剰共有は、本来分けるべきエージェント・ワークフロー・テナントの間でコンテキストを使い回すことです。どちらも、誰も意図していない境界を越えてデータを動かしてしまいます。
実例・根拠:Asanaは2025年5月1日にMCPサーバーを公開し、6月4日に、組織をまたいでデータが見えうるロジックの不具合を発見しました。AsanaはBleepingComputerに対し、影響は約1,000社の顧客だったと説明しています。サーバーは6月17日に通常運用へ戻りました。
最初の対策:キャッシュ・メモリ・状態ハンドルはすべて、クライアントからの入力ではなく、検証済みトークンから取り出したテナントとユーザーをキーにします。公開前に、2つのアカウントで互いのデータを読めないかを試すスクリプトを用意し、テナント分離を明示的にテストします。
5. どの役割が、どのリスクを担当するか
同じTop 10でも、立場によって読み方が変わります。次の表で各項目の担当を決めてください。「主担当」は、対策の大部分が自分のコードや設定にあることを意味します。
| 項目 | クライアント利用者(Claude、IDE、エージェント) | サーバー開発者 | 基盤運用者・セキュリティチーム |
|---|---|---|---|
| MCP01 トークンとシークレット | 設定ファイルについて主担当 | 主担当 | 主担当 |
| MCP02 スコープの拡大 | 分担 | 分担(スコープを定義する) | 主担当(付与と見直し) |
| MCP03 ツールポイズニング | 主担当(固定・再承認) | 主担当(配布しない) | 分担 |
| MCP04 サプライチェーン | 主担当(何を導入するか) | 主担当(何に依存するか) | 主担当(承認済みの入手元) |
| MCP05 コマンドインジェクション | 影響は小さい | 主担当 | 分担(サンドボックス) |
| MCP06 意図フローの乗っ取り | 主担当(承認) | 分担(指示ではなくデータを返す) | 分担(Egressの制限) |
| MCP07 認証・認可 | 影響は小さい | 主担当 | 主担当 |
| MCP08 監査ログ | 分担 | 分担 | 主担当 |
| MCP09 シャドーサーバー | 分担(自分が動かしているものを申告) | 影響は小さい | 主担当 |
| MCP10 コンテキストの過剰共有 | 分担 | 主担当(テナントのキー設計) | 分担 |
社内SaaSをMCPで公開し、APIトークンを配っているチームであれば、サーバー開発者と運用者の列で「主担当」になっている項目、つまりMCP01・MCP02・MCP05・MCP07・MCP08が自分たちの担当です。サーバーがユーザーごとの状態を持つなら、MCP10も加わります。
6. OWASP LLM Top 10(2025)・Agentic Top 10(2026)との対応
OWASPには、内容が重なる3つのリストがあります。LLM Top 10(2025)はLLMを使うアプリケーション、Top 10 for Agentic Applications(2025年12月9日公開)は自律型エージェント、MCP Top 10はエージェントとツールをつなぐプロトコル層が対象です。次の対応表は筆者の解釈によるもので、OWASPが公式に対応表を出しているわけではありません。
| MCP Top 10 | 最も近いLLM Top 10(2025)の項目 | 最も近いAgentic Top 10(2026)の項目 |
|---|---|---|
| MCP01 トークン管理 | LLM02 Sensitive Information Disclosure | ASI03 Identity & Privilege Abuse |
| MCP02 スコープの拡大 | LLM06 Excessive Agency | ASI03 Identity & Privilege Abuse |
| MCP03 ツールポイズニング | LLM01 Prompt Injection | ASI02 Tool Misuse & Exploitation |
| MCP04 サプライチェーン | LLM03 Supply Chain | ASI04 Agentic Supply Chain Vulnerabilities |
| MCP05 コマンドインジェクション | LLM05 Improper Output Handling | ASI05 Unexpected Code Execution (RCE) |
| MCP06 意図フローの乗っ取り | LLM01 Prompt Injection | ASI01 Agent Goal Hijack |
| MCP07 認証・認可 | 直接対応する項目なし | ASI03 Identity & Privilege Abuse、ASI07 Insecure Inter-Agent Communication |
| MCP08 監査ログ | 直接対応する項目なし | 直接対応する項目なし(ASI10 Rogue Agentsの検知を支える) |
| MCP09 シャドーMCPサーバー | 直接対応する項目なし | 直接対応する項目なし |
| MCP10 コンテキストの過剰共有 | LLM02 Sensitive Information Disclosure、LLM08 Vector and Embedding Weaknesses | ASI06 Memory & Context Poisoning |
注目すべきは対応がない部分です。MCP08とMCP09は、モデルではなく運用の問題なので、LLMのリストに対応する項目がありません。すでにLLM Top 10で管理しているなら、この2つがMCPで新たに増える作業です。
7. 30分でできる自己診断(20点満点)
各項目を、0点(未対応)、1点(一部のみ、または一部のサーバーのみ)、2点(すべてのMCPサーバーで対応済み)で採点します。同僚が使っているクライアントではなく、自分たちが運用・公開しているサーバーについて答えてください。
| 項目 | 質問 | 2点の条件 |
|---|---|---|
| MCP01 | クライアント設定、イメージのレイヤー、ビルドログ、リクエストログのどこかにトークンが残っていないか | 残っておらず、どのトークンも期限切れになるか数分で失効できる |
| MCP02 | 各認証情報は、その用途に必要なツールだけを呼び出せるか | スコープがツール単位で定義され、定期的に見直されている |
| MCP03 | サーバーのツール定義が変わったら気づけるか | 定義のハッシュを固定し、変更時は再承認が必要 |
| MCP04 | サードパーティ製サーバーは、レビュー済みのバージョンに固定されているか | 公開者を確認済みで、サンドボックス内で動いている |
| MCP05 | モデルの入力からシェルコマンド・SQL・コードを組み立てるツールはないか | ない、または専用のサンドボックス内だけ |
| MCP06 | 書き込み・削除・外部送信に、人間の承認かポリシーによるチェックがあるか | 非公開データにアクセスするすべてのエージェントで必須 |
| MCP07 | すべてのリモートサーバーが、認証なしのリクエストと宛先違いのトークンを拒否するか | 拒否し、環境ごとに認証情報が分かれている |
| MCP08 | 先週「誰が・どこから・どのツールを呼んだか」に答えられるか | 拒否された呼び出しも含めて答えられる |
| MCP09 | 組織で今動いているMCPサーバーをすべて挙げられるか | 挙げられ、新規導入は公式の手順を通る |
| MCP10 | メモリ・キャッシュ・状態ハンドルは、テナントと検証済みユーザーをキーにしているか | なっており、2アカウントでテスト済み |
合計点の目安:16〜20点なら基本はできているので、次は検知と訓練です。10〜15点なら、0点の項目から直します。優先順はMCP07、MCP02、MCP01です。10点未満なら、非公開データに触れる新しいMCP連携は、認証とスコープが整うまで止めることをおすすめします。
各質問の背景にある本番向けのチェック項目は、MCPセキュリティのベストプラクティスと25項目のチェックリストにまとめています。
8. よくある誤解(誤解→問題点→対処)
| 誤解 | 問題点 | 対処 |
|---|---|---|
| 「MCP仕様に従っているからTop 10も満たしている」 | 認可は任意で、MCP04・MCP09・MCP10は大半がプロトコルの外にある | 3章の表で、仕様が利用者に任せている対策を洗い出す |
| 「MCP03とMCP06は同じもの」 | MCP03はツール定義の改ざん、MCP06は取得したコンテンツやツール出力に含まれる指示 | MCP03は定義の固定、MCP06は行動の封じ込めで対策する |
| 「賢いモデルなら注入された指示を拒否してくれる」 | OWASPはリソースやツールの出力を初期状態で信頼しない前提に立っている。確実に拒否できるモデルはない | スコープ・承認・Egressなど、モデルの外で制限をかける |
| 「シャドーMCPは規程の問題にすぎない」 | 公開されたサーバーはスキャンで見つかり、技術的に悪用される | 台帳と、認証付きの公式な導入手順をセットで用意する |
| 「監査のためにはリクエストを丸ごと記録するのが一番安全」 | 生のペイロードはトークンや顧客データをログに持ち込み、MCP01を自ら作る | 値ではなく、引数のキー名と結果を記録する |
| 「ベータ版だから正式版を待てばよい」 | すべての項目に、すでに公開された事例がある | 今のIDで管理を始め、正式版で表現を見直す |
| 「ゲートウェイを入れればTop 10は解決する」 | ゲートウェイはMCP01・MCP02・MCP07・MCP08に効き、MCP06の被害を抑えるが、自分のコードのMCP05や導入したパッケージのMCP04は直せない | 項目ごとに具体的な対策と担当者を決める |
ゲートウェイが効く範囲の対策を比較したい場合は、認証とツール単位のアクセス制御で選択肢を比べたMCPゲートウェイの比較記事も参考になります。
9. NodeFlareならこう解決できる
NodeFlareはリモートMCPサーバーのホスティングサービスです。各サーバーは専用のFirecracker microVMで動き、手前のproxyがすべてのリクエストを認証・認可・記録してから、あなたのコードへ渡します。NodeFlareにデプロイしたサーバーについては、Top 10のいくつかを機能で押さえられます。一方で、チームが使うクライアントや、ほかの場所で動いているサーバーは対象外です。この記事で挙げたリスクと、ドキュメントに記載された機能の対応は次のとおりです。
| OWASPの項目 | NodeFlareの機能 | 内容 |
|---|---|---|
| MCP01 トークンとシークレット | 暗号化されたシークレット、ハッシュ化されたキー | 環境変数は保存時に暗号化され、VM起動時にだけ注入されます。ビルド引数・argv・イメージのレイヤー・ログには残らず、ビルドログでは既知のトークン形式がマスクされます。mcp_* 形式のAPIキーはハッシュ化して保存されます |
| MCP02 スコープの拡大 | ツール単位のスコープ | tools:call:<ツール名>(例:tools:call:get_weather)、resources:read:<uri>、prompts:get:<name> といったスコープをproxyが転送前に照合し、一致しなければJSON-RPCエラーを返してサーバーには届けません。tool_list_filter_by_scope で、各呼び出し元には呼べるツールだけを一覧に表示できます |
| MCP04・MCP05 サプライチェーンとコマンドインジェクション(被害の封じ込め) | サーバーごとのFirecracker microVM、コードモードのサンドボックス | 各サーバーは専用のmicroVMで動きます。コードモードでモデルが書いたコードは、リクエストごとのDenoサブプロセスで実行され、ファイルシステム・環境変数・子プロセスの生成はなく、通信先はコールバック先のみです。V8ヒープは128MB、タイムアウトは既定600秒、ツール呼び出しは既定で1回の実行あたり50回までです |
| MCP06 意図フローの乗っ取り(被害の封じ込め) | Egress制御 | モードは off(既定)、observe(記録のみ)、enforce(リスト外を遮断)の3つです。登録は最大100件で、完全一致のホスト名、先頭のワイルドカード1つ(*.example.com など)、IPを指定できます。ホスト側のDNSとnftablesで強制し、通信内容は復号しません |
| MCP07 認証・認可 | 既定で非公開、APIキーまたはOAuth、ロックアウト、IP許可リスト | サーバーは既定で非公開です。呼び出し元は mcp_* のBearerキーかOAuthアクセストークンを使い、クライアント向けにRFC 8414・RFC 9728のディスカバリメタデータを配信します。同じIPから誤ったキーが繰り返されると、そのIPを10分間ロックします。ポリシーを restricted にしてIPv4/IPv6のCIDRを登録すると、認証やVM起動より前に判定され、リストが空なら全拒否になります(ネットワークアクセス制限はProプランに記載があり、Teamにも含まれます) |
| MCP08 監査ログ | リクエストログ | リクエストごとに mcp_method、tool_name、arg_keys(キー名のみで値は残さない)、http_status、outcome(scope_denied、rate_limited など)、duration_ms、caller_kind、client_ip などを記録します。保持期間はFreeが7日、ProとTeamが30日です |
| MCP09 シャドーサーバー | デプロイ先を1か所にまとめ、公開範囲を明示 | GitHubリポジトリからデプロイし、毎回実際のMCP initialize が応答するまで成功にしません。各サーバーは、非公開・チーム共有・公開一覧のどれにするかを明示的に選びます |
| MCP10 過剰共有(サーバー間・呼び出し元間) | 分離と、呼び出し元ごとのキャッシュ | サーバーごとにmicroVMを分けます。フィルタ済みのツール一覧のキャッシュは呼び出し元の識別子をキーに含むため、別の認証情報へ漏れません |
NodeFlareでできないこと:改ざんされたツール説明文の検知や、モデル内部でのプロンプトインジェクションの阻止はできません(MCP03・MCP06)。スコープ、Egress制御、ログによって、乗っ取られたエージェントにできることを制限し、何をしたかを見えるようにするところまでです。また、サーバーが依存するパッケージのスキャン(MCP04)、ツールのコード内にあるコマンドインジェクションの修正(MCP05)、NodeFlare以外で動いているMCPサーバーの検出(MCP09)、サーバー自身のメモリ内でのデータ分離(MCP10)も対象外です。Egress制御は有効にするまでオフのままです。また、NodeFlareの認証を外す設定(auth_enabled = false)にすると、呼び出し元の認証情報がそのままサーバーへ転送されます。サーバー側で自前のトークン検証をしていない限り、認証は有効のままにしてください。
最小の始め方:
- GitHubリポジトリからMCPサーバーをデプロイし、APIトークンはコードに書かず、暗号化された環境変数として登録します。
- 呼び出し元ごとに
mcp_*キーを1つ発行し、必要なtools:call:<ツール名>スコープだけを付けます。 - Egress制御を1週間
observeで動かし、記録された接続先だけを登録してenforceに切り替えます。
1サーバーまでは無料で試せます。NodeFlareを始める
10. よくある質問(FAQ)
OWASP MCP Top 10とは何ですか?
OWASP MCP Top 10とは、Model Context Protocolを使うシステムの重大なセキュリティリスク10項目をまとめたOWASPのプロジェクトです。MCP01のトークン管理の不備から、MCP10のコンテキストの過剰共有までを扱い、項目ごとに攻撃シナリオ・対策・検知のサインが書かれています。現行の項目には2025の年号が付いています。
OWASP MCP Top 10は正式版ですか?
正式版ではありません。2026年10月時点で、プロジェクトページはベータ版と位置づけており、次のステップが正式版の公開です。引用するときは MCP04:2025 のように年まで付け、正式版が出たら名称を確認し直してください。たとえばMCP06は、すでに2つの名前で表記されています。
OWASP MCP Top 10とOWASP Top 10 for LLM Applicationsの違いは?
LLM Top 10(2025)は、プロンプトインジェクションや過剰な自律性など、LLMを使うアプリケーション全般のリスクを扱います。MCP Top 10は、エージェントとツールやデータをつなぐプロトコル層が対象です。そのため、LLMのリストにはない運用面のリスク、特にMCP08の監査ログの欠如とMCP09のシャドーMCPサーバーが加わっています。
OWASP MCP Top 10とAgentic Top 10の違いは?
2025年12月9日に公開されたAgentic Top 10は、ASI01 Agent Goal HijackやASI10 Rogue Agentsなど、自律型エージェント全体のリスクを扱います。MCP Top 10は、MCPサーバー・クライアントとその認証情報に焦点を絞っています。MCPの項目の多くにはエージェント側の対応項目がありますが、シャドーMCPサーバーには対応する項目がありません。
MCP06のIntent Flow Subversionとは?
エージェントが取得したファイル、Issue、ツールの結果などのコンテンツに隠れた悪意ある指示によって、エージェントがユーザーの目的から外れた行動をとるリスクを指すOWASPの用語です。間接プロンプトインジェクションの一種です。一覧ページでは「Prompt Injection via Contextual Payloads」とも表記されています。
シャドーMCPサーバーとは何ですか?
セキュリティチームの承認や監督を受けずに動いているMCPサーバーのことで、初期設定の認証情報のままだったり、認証がなかったりすることが多いものです。OWASPはMCP09として挙げています。台帳の整備、認証が最初から有効な公式の導入手順、MCPのエンドポイントを探すスキャンの3つで対策します。
MCPの仕様はOWASP MCP Top 10をカバーしていますか?
一部だけです。2026-07-28版の仕様には、MCP01・MCP03・MCP05・MCP07に関わるMUSTの規定があり、MCP02・MCP04・MCP06・MCP08にはSHOULDレベルの指針があります。シャドーサーバー(MCP09)とコンテキストの過剰共有(MCP10)は主に組織の運用で防ぐもので、プロトコルではほとんど扱われていません。
OWASP MCP Top 10のうち、どれから対策すべきですか?
ほかのすべての項目で被害範囲を小さくできる対策から始めます。すべてのリモートサーバーでの認証(MCP07)、すべての認証情報でのツール単位のスコープ(MCP02)、設定ファイルやログにトークンを残さないこと(MCP01)です。その次に監査ログ(MCP08)を整え、それでも起きることを見えるようにします。
MCPゲートウェイでOWASP MCP Top 10は解決できますか?
ゲートウェイだけでは解決できません。認証・ツール単位のスコープ・ログを強制できるので、MCP01・MCP02・MCP07・MCP08に効き、MCP06の被害も抑えられます。しかし、ツールのコード内のインジェクション(MCP05)、導入するパッケージの検証(MCP04)、ゲートウェイを通さずに立てられたサーバーの発見(MCP09)はできません。
自社のMCP環境をOWASP MCP Top 10で点検するには?
各項目を、「各認証情報は用途に必要なツールだけを呼べるか」のような具体的な質問で0〜2点で採点します。この記事の7章に、項目ごとの質問と20点満点の採点基準を載せています。1点の項目を2点にするより先に、0点の項目をなくしてください。
まとめ
OWASP MCP Top 10(2025年版・ベータ)は10のリスクを挙げており、そのすべてに公開された実例があります。MCP仕様 2026-07-28版は、トークン、認可、コマンドインジェクション、アノテーションについては規定を持っていますが、サプライチェーン、プロンプトインジェクション、ログについてはSHOULDレベルの推奨にとどまり、シャドーサーバーとコンテキストの過剰共有は組織に任されています。項目ごとに担当を決め、20点満点で自己診断し、まずは被害範囲を小さくする対策、つまり認証、ツール単位のスコープ、設定ファイルやログにシークレットを残さないことから整えてください。ツールポイズニングの種類と封じ込め方は、MCPツールポイズニング対策ガイドで続きを解説しています。
参考資料(一次情報)
- OWASP MCP Top 10(プロジェクトページ)
- OWASP MCP04:2025 Software Supply Chain Attacks & Dependency Tampering
- OWASP MCP06:2025 Intent Flow Subversion
- OWASP MCP09:2025 Shadow MCP Servers
- MCP仕様 2026-07-28版:Security Best Practices
- MCP仕様 2026-07-28版:Tools(Security Considerations)
- OWASP Top 10 for Agentic Applications for 2026
- OWASP Top 10 for Large Language Model Applications
- NVD:CVE-2025-6514(mcp-remote)
- NVD:CVE-2025-49596(MCP Inspector)
- Backslash Security:Hundreds of MCP servers vulnerable to abuse
- BleepingComputer:Asana warns MCP AI feature exposed customer data to other orgs
- NodeFlare Docs
