最近公開された Damn Vulnerable Model Context Protocol(DVMCP)プロジェクトは、Model Context Protocol(MCP)実装のセキュリティ影響についてテクノロジーコミュニティ内で大きな議論を巻き起こしています。MCP実装の脆弱性を示すために設計されたこの教育プロジェクトは、これらのシステムがどのように展開され、保護されるべきかについての根本的な誤解を浮き彫りにしました。
信頼境界がMCPセキュリティの鍵
コメントスレッドの専門家によると、MCPサーバーは公開APIとして設計されておらず、信頼された環境内で動作するコンポーネントであるとされています。多くのコメント投稿者は、MCPがそのトランスポート層が本質的に信頼されていることを前提としていると強調しており、これはこれらのシステムを実装する開発者に広く理解されていません。あるコメント投稿者は、プロトコルがデフォルトのstdioトランスポートメカニズムを通じてこれを明確にしていると指摘し、MCPサーバーはそれにアクセスできるクライアントにとって暗黙的に信頼できる環境で実行されることが期待されていることを示しています。
「MCP仕様では、MCPサーバーはアクセスできるクライアントにとって暗黙的に信頼される/信頼できる環境で実行されることが期待されていることが明確です。これはデフォルト/想定されるstdioトランスポートから明らかですが、SSEでも、プロトコルは認証が既に解決されていることを期待しています。」
この視点では、MCPサーバーはスタンドアロンサービスではなく、それ自体がクライアントアプリケーション—基本的にサービスを抽象化し、LLMがそれらと対話するためのコンテキストを追加するプロキシやゲートウェイとして捉えられています。
現実世界のセキュリティインシデントが懸念を引き起こす
理論的なセキュリティモデルにもかかわらず、実際の実装ではすでに重大な脆弱性が示されています。 Invariant Labsのセキュリティ研究者は、ツール汚染、ラグプル、ツールシャドウイングなど、いくつかの攻撃ベクトルを文書化しています。特に懸念される例として、 WhatsApp MCPサーバーが、攻撃者がユーザーにプライベートメッセージを別のアカウントに転送するよう指示するソーシャルエンジニアリング技術を通じて、攻撃者にプライベートデータへのアクセスを与える可能性があるケースがありました。
これらのインシデントは、MCPそのものが本質的に脆弱ではないかもしれませんが、現在のエコシステムがセキュリティ侵害につながる可能性のある実装を奨励していることを示唆しています。理論的なセキュリティモデル(MCPが信頼された環境で動作する)と実際の実装(セキュリティ境界がしばしば不明確に定義されている)の間のギャップが、多くの脆弱性の根本原因であるように見えます。
MCP のセキュリティリソース
- 初期セキュリティ通知: https://invariantlabs.ai/blog/mcp-security-notification-tool... (ツール汚染、ラグプル、ツールシャドウイングに関する詳細)
- WhatsApp MCP エクスプロイト: https://invariantlabs.ai/blog/whatsapp-mcp-exploited
- BrowserMCP 攻撃: https://x.com/lbeurerkellner/status/1912145060763742579
- セキュリティスキャンツール: https://github.com/invariantlabs-ai/mcp-scan
適切な実装には明確な境界が必要
安全なMCPサーバーを正常に実装した開発者は、明示的な制御の重要性を強調しています。あるコメント投稿者は、できることに厳しい制限を設けたサーバーを作成したと述べています—例えば、メールを送信できるが特定のメールアドレスにのみ送信できるようにしたり、ファイルシステムへのアクセスを機密性のないディレクトリに制限したりするなどです。このアプローチでは、MCPサーバーはLLMと会話している人と同じ権限とアクセス権を持つものとして扱い、明確なセキュリティ境界を確立します。
DVMCPプロジェクト自体は、3つの難易度レベルにわたる10のチャレンジを概説し、基本的なプロンプトインジェクションから洗練された多ベクトル攻撃まで、さまざまな攻撃ベクトルを示しています。これらの教育的な例は、MCP実装でセキュリティ上の考慮事項が見落とされた場合に何が起こり得るかについての警告として役立ちます。
DVMCPで実証された主要なMCPセキュリティ脆弱性
- プロンプトインジェクション: 悪意のある入力を通じてLLMの動作を操作する
- ツール汚染: ツールの説明に悪意のある指示を隠す
- 過剰な権限: 過度に許可されたツールアクセスを悪用する
- ラグプル攻撃: ツール定義の変更を悪用する
- ツールシャドウイング: 正規のツールを悪意のあるものに上書きする
- 間接的なプロンプトインジェクション: データソースを通じて指示を挿入する
- トークン窃取: 安全でないトークン保存を悪用する
- 悪意のあるコード実行: 脆弱なツールを通じて任意のコードを実行する
- リモートアクセス制御: 不正なシステムアクセスを取得する
- 複合型攻撃: 複数の脆弱性を組み合わせる
教育ツールは配布の課題に直面
興味深いことに、一部のコメント投稿者はプロジェクト名についても懸念を提起し、 Damn Vulnerable Model Context Protocol の「Damn」という言葉が、特にK-12の生徒に対する教育環境での採用を制限する可能性があると指摘しています。これは同様に名付けられた Damn Vulnerable Web Application(DVWA)が直面した課題と似ており、教育者は若い生徒に適切なものにするためにプロジェクトの名前を変更したりクローンを作成したりする必要がありました。
MCPの採用が拡大するにつれて、コミュニティは技術的なセキュリティの課題と、次世代の開発者にこれらの問題について教育する方法に関する実践的な考慮事項の両方に取り組んでいるようです。DVMCPプロジェクトは、命名に関する潜在的な懸念にもかかわらず、この新興プロトコルにおけるセキュリティ上の考慮事項に関する意識を高める重要なステップを表しています。
MCPセキュリティに関する議論は、開発者にとって重要な点を強調しています:プロトコルの意図された展開コンテキストとセキュリティモデルを理解することは、その技術仕様を理解することと同じくらい重要です。あるコメント投稿者が簡潔に述べたように、MCPセキュリティはすべて信頼に関するものです—信頼すれば問題ありませんが、その信頼は適切な実装と明確な境界を通じて確立される必要があります。