ライブラリに戻る
Standards

MCPセキュリティ:20万の脆弱なインスタンスがガバナンスされたモジュールを購買基準にする理由

最終更新:2026年7月7日

開示

2026年4月と5月、OX Security は、コマンドインジェクションとリモートコード実行を可能にするモデルコンテキストプロトコル(MCP)STDIO構成の体系的なアーキテクチャ上の欠陥を開示しました。この勧告はMCPサプライチェーン全体にわたる10件のCVEをカバーしており — 推定20万の脆弱なインスタンスが、1億5000万ダウンロードに及びます。この脆弱性は単一のパッケージにあるのではありません。ほとんどのコミュニティMCPサーバーが出荷時に備えるデフォルト構成パターンにあります。

Cloud Security Alliance は、研究ノートに「MCPセキュリティ危機:AIエージェントインフラにおける体系的な設計上の欠陥」というタイトルを付けました。OWASPはMCP Top 10プロジェクトを立ち上げ、MCP対応システムのライフサイクル全体で最も重大なセキュリティ上の懸念を分類しました。Aembit はトランスポートリスクとサプライチェーンの脅威をカバーするガイドを公開しました。TrueFoundry はMCPセキュリティリスクとベストプラクティスに関するエンタープライズガイドを公開しました。

これらすべてに共通するパターン:脆弱性の面が存在するのは、コミュニティMCPサーバーが、本番システムが要求するガバナンスレイヤーなしに構築・デプロイされているためです。

脆弱性の実体

MCPサーバーは、トランスポートを介してAIエージェントクライアントと通信します。STDIOトランスポート — ローカル開発および多くの本番デプロイのデフォルト — は、標準入力と標準出力でメッセージを渡します。OX Securityの開示は、一般的なSTDIO構成パターンがコマンドインジェクションを許すことを特定しました:巧妙に細工された入力が、MCPサーバーを実行しているホスト上で任意のコマンドを実行できます。

これは理論上の攻撃経路ではありません。MCPサーバーは、エージェントクライアントと同じマシン上で、同じプロセス権限で実行されます。STDIO経由で受け取った入力に基づいてシェルコマンドを受け入れて実行するサーバーは、構造上リモートコード実行の面です。20万インスタンスという推定は、コミュニティMCP採用の規模を反映しています — レジストリに公開され、リポジトリからクローンされ、本番向けに堅牢化されたことのないデフォルト構成でデプロイされたサーバーです。

Backslash Security は別途、MCP 2026-07-28 リリース候補そのものが導入する3つの新たな攻撃面を特定しました — 20日後に確定するのと同じ仕様です。新しいケーパビリティ(サーバーレンダリングされたUI、長時間実行タスク、ヘッダーベースのルーティング)は、セキュリティコミュニティがまだマッピング中の新たなエントリポイントを作り出します。

なぜコミュニティサーバーが露出なのか

ほとんどのコミュニティMCPサーバーは、ケーパビリティを実証するために構築されています — エージェントをツールに接続し、結果を返す。運用されるために構築されてはいません。本番システムが要求するガバナンス制御はデフォルトで欠如しています:

  • 監査ログなし。 ツール呼び出しはリクエスト、レスポンス、レイテンシ、結果と共にログに記録されません。インシデントが発生したとき、再構築するための証跡がありません。
  • レート制限なし。 ツールは制限なく呼び出せます。侵害された、または誤動作するエージェントは、アップストリームのAPIクォータを枯渇させたり、大規模に意図しない副作用を引き起こしたりできます。
  • 型付きエラー契約なし。 エラーは文字列または非構造化レスポンスとして返されます。エージェントは一時的な失敗と恒久的な失敗を区別できず、オペレーターはインシデントをプログラム的に分類できません。
  • キルスイッチなし。 オペレーターランブックも、フォールバックパスも、オーケストレーションバックボーンに触れずにモジュールを無効化する方法もありません。
  • テストカバレッジなし。 エラーパスはテストされていません。開発で一度も動かされなかった失敗モードが、本番で発火するものです。

これらは特異なセキュリティ要件ではありません。あらゆる本番APIが強制するのと同じ制御です。ギャップは、MCPサーバーが本番統合ではなく開発ユーティリティであるかのようにデプロイされていることです。

ガバナンスされたモジュールとはどのようなものか

私たちが公開するMCPモジュールコード標準は、これらのギャップそれぞれに対処するガバナンスレイヤーを定義します。この標準はセキュリティフレームワークではありません — セキュリティを強制可能にするコード標準です。制御は具体的です:

監査ログ。 すべてのツール呼び出しは、タイムスタンプ、エージェントID、ツール名、入力ハッシュ(生の入力ではなく — PII境界)、出力ステータス、期間、アップストリームシステムをログに記録します。ログは構造化JSONとしてオブザーバビリティパイプラインに送信されます。インシデントが発生したとき、監査トレイルはリクエスト引数とハンドルから完全なワークフロー状態を再構築します — セッションストアのログとの相関付けは不要です。

レート制限。 各ツールは登録呼び出しで独自のレート制限を宣言します。バックボーンはエージェントごと、ツールごと、ウィンドウごとに制限を強制します。制限に到達すると、エージェントは Retry-After ヘッダー付きの 429 レスポンスを受け取ります — クラッシュしたり盲目的にリトライしたりしません。レート制限はアップストリームAPIではなくモジュール境界で強制されるため、侵害されたエージェントがアップストリームのクォータを枯渇させることはできません。

型付きエラー契約。 モジュールは、生の文字列ではなく型付き例外 — MCPAuthErrorMCPRateLimitErrorMCPTimeoutErrorMCPValidationErrorMCPUpstreamError — を発生させます。バックボーンはこれらをキャッチし、エージェントが推論できる構造化レスポンスに変換します。すべてのエラーがコードを持つため、オペレーターはインシデントをプログラム的に分類できます。

PII境界処理。 モジュールはどの入力フィールドにPIIが含まれるかを宣言します。バックボーンはログに記録する前にこれらのフィールドをハッシュ化し(SHA-256)、生のPIIを監査パイプラインに送信しません。ツールハンドラは引き続き生の値を受け取ります — PII処理はビジネスロジックの内部ではなく、ログ境界で強制されます。

テストカバレッジ。 すべてのツールにリクエスト/レスポンステストとエラーパスカバレッジがあります。統合テストはサンドボックス環境に対して実行されます。モックテストはツール登録、引数マッピング、レスポンス正規化、エラー伝播、状態遷移を検証します。開発で一度も動かされなかった失敗モードは出荷されません。

38ツールの証明ポイント

これらの制御は理想論ではありません。それらは mcp_hospirfq_processor の構造そのものです — 完全なRFQライフサイクルにわたって38のツールを登録するモジュールです:リクエスト作成、カタログ検索、見積生成、価格ティア、可用性確保、キャンセルポリシー、バンドル発見、注文引き渡し。

このモジュールのエラーハンドラは、すべての失敗モードに対して型付きエラーコード — GRAPHQL_QUERY_FAILEDVALIDATION_FAILEDHOLD_NOT_FOUNDHOLD_ALREADY_EXPIREDAVAILABILITY_INSUFFICIENTPRICING_MODE_UNSUPPORTED — を定義します。各エラーはコードと構造化された詳細を持ちます。handle_errors デコレータがすべてのツールメソッドをラップするため、非構造化例外を返すツールはありません。ステータスマネージャは有効な状態遷移を強制します — 確保は確認、解放、または期限切れにできますが、初期から完了へスキップすることはできません。

これが実践におけるガバナンスされたモジュールの姿です:すべてのツールにスキーマがあり、すべてのエラーにコードがあり、すべての呼び出しにログがあり、すべての状態遷移にバリデータがあります。ガバナンスは、誰かが読むかもしれないドキュメントの中ではなく、コードの中にあります。

キルスイッチアーキテクチャ

ガバナンスレイヤーは、モジュールを越えてオーケストレーションバックボーンにまで拡張します。エンジニアリングブリーフは運用姿勢を規定します:

  • オペレーターランブック。 デプロイ、ロールバック、インシデントレスポンス、一般的な操作が文書化されています。モジュールが誤動作したとき、オペレーターはSlackスレッドではなくランブックに従います。
  • フォールバックパス。 バックエンドが利用不可の時のグレースフルデグレーション。アップストリームに到達できないモジュールは構造化エラーを返し、エージェントはフォールバックツールにルーティングするか人間にエスカレートします。
  • フィーチャーフラグロールアウト。 モジュールは環境ごとに有効化されます。オーケストレーションバックボーンに触れずにモジュールを無効化できます — キルスイッチはコードデプロイではなく構成変更です。
  • オブザーバビリティ。 構造化ログ、メトリクス、トレースが監視スタックに送信されます。エージェントの振る舞いはエンドツーエンドで監査可能です — 企業が財務管理に適用するのと同じ姿勢です。

キルスイッチアーキテクチャは、OX Securityの開示が20万のコミュニティサーバーで欠けていると露呈した制御です。脆弱性が開示されたとき、オペレーターの最初の問いはこうです:エージェントを停止させずにこのモジュールを無効化できるか? ガバナンスされたデプロイでは、答えはイエスです。コミュニティサーバーのデプロイでは、答えは通常ノーです — サーバーはエージェントのツールリストに組み込まれており、削除するにはコードを編集して再デプロイする必要があります。

なぜ今これが購買基準なのか

PwC 2026 Global CEO Survey(4,454名のCEO)は、組織の56%がAIから測定可能な財務的利益を報告していないことを明らかにしました。WRITERのエンタープライズAI採用調査は、企業の35%が一度デプロイしたAIエージェントのプラグを抜けないことを明らかにしました。この組み合わせが購買基準です:無効化できないシステムは負債であり、測定可能な利益を生まないシステムはコストです。ガバナンス — 監査ログ、レート制限、型付きエラー、キルスイッチアーキテクチャ — は、AIエージェントをデプロイするのを安全にし、廃止するのを安全にする制御です。

Gartnerは、2026年末までに、不十分なAIリスクガードレールにより「AIによる死」の法的請求が2,000件を超えると予測しています。EU AI法は2026年8月2日に全面適用されます — 今日から25日後です。第50条の透明性ルールはAI生成コンテンツの開示を要求します。リスク分類、文書化、記録保持は、高リスクシステムにとって必須になります。ガバナンスされたモジュールがすでに出荷時に備えている監査ログとオペレーターランブックは、EU AI法が要求するコンプライアンスの証拠です。

MCP 2026-07-28 仕様は20日後に確定します。それが出荷されると、「Model Context Protocol」の検索と引用の量が急増します — そしてセキュリティの面への精査も同様です。ガバナンスの基準を満たさないコミュニティサーバーは、フラグを立てられるものになります。

決定

チームがMCPベースのエージェントデプロイを評価するとき、問いはもはや「接続するか?」ではありません。コミュニティサーバーは接続します。問いはこうです:何かがうまくいかないとき、それを見て、止めて、何が起きたかを証明できるか?

ガバナンスされたモジュールは、3つすべてにイエスと答えます。コミュニティサーバーは、デフォルトで3つすべてにノーと答えます。20万の脆弱なインスタンスがその証拠です。


NetSuite、BigCommerce、3つのサプライヤーカタログを実行するディストリビューターは、メールまたはポータルでRFQを受信し、カタロググラフに対して製品と代替品を解決し、顧客ティアごとに価格設定し、期限付きで在庫を確保し、承認された見積をNetSuiteに書き戻すエージェントを得ます — すべてのステップがログに記録され、すべてのツールがレート制限され、すべてのモジュールが構成によって無効化可能です。その構築は4ステップメソッドのフェーズ2〜3であり、通常5〜8週間で稼働します。

スコープ付き構築を依頼してください。 1週間のディスカバリ。私たちと構築するかどうかにかかわらず、システムインベントリ、ワークフローマップ、固定スコープを得られます。

あなたのシステムのためにこれを構築したいですか?

ここの各ドキュメントは実際の本番作業から来ています。ターゲットシステムとワークフローがあれば、1週間でスコープを定義できます。

スコープ付き構築を依頼

1週間のディスカバリ。システムインベントリ、ワークフローマップ、固定スコープを提供します — 私たちと構築するかどうかにかかわらず。