← ブログ一覧

MCPサーバーの脆弱性は修正済み?セキュリティリスクと対策

Model Context Protocol(MCP)は、AIエージェントが外部ツールやデータと接続するための標準プロトコルです。2024年後半にAnthropicが発表して以降、急速に普及しましたが、2025年にはセキュリティ面で深刻な問題が複数発覚しました。業務でサーバーを開発したこともあり、この記事では、MCPサーバーで発見された主要な脆弱性と、現在の修正状況や安全に運用するための対策を解説します。

この記事のまとめ

2025年、MCPサーバーには複数の重大な脆弱性が発見されました。最も影響が大きかったのはコマンドインジェクションとパストラバーサルで、攻撃者によるリモートコード実行やサンドボックスエスケープが可能になっていました。主要な脆弱性はすでに修正されていますが、MCPサーバーを安全に運用するには依存関係の管理と認証設定が不可欠です。

  1. 2025年に発見された脆弱性の大半は、基本的なコマンドインジェクション(CWE-78)
  2. 最も影響が大きかったCVE-2025-6514(mcp-remote)は43万回以上ダウンロードされたパッケージに存在
  3. 主要な脆弱性は修正済みだが、導入時には認証設定と依存関係の検証が必須

この記事の情報源

この記事は、以下の情報源に基づいています。重要な判断をする際は、必ずこれらを直接ご確認ください。



MCPサーバーの脆弱性とは?何が問題だったのか

2025年、MCPサーバーには複数の深刻なセキュリティ脆弱性が発見されました。これらは単なるデータ漏洩に留まらず、攻撃者がサーバーを乗っ取り、任意のコードを実行できるリモートコード実行(RCE)や、指定された範囲外のファイルにアクセスできるパストラバーサルといった、システム全体を危険に晒す問題でした。

MCPの脆弱性が深刻な理由は、その設計思想にあります。MCPサーバーは、AIエージェントがデータベース操作やファイルアクセス、API呼び出しといった実世界のアクションを実行できるように設計されています。そのため、脆弱性を突かれると、攻撃者は単にデータを盗むだけでなく、接続されているすべてのシステムに侵入する足がかりを得ることができます。

特に問題だったのは、発見された脆弱性の大半が、入力検証の不備によるコマンドインジェクション(CWE-78)という、古典的かつ基本的なセキュリティエラーだったことです。MCPエコシステムが急速に拡大する中で、安全性への配慮が十分になされなかった可能性があります。

2025年に発見された主要な脆弱性

2025年に公開されたMCPサーバーの脆弱性の中で、特に影響が大きかったものを以下の表にまとめました。

CVE ID

影響を受けるパッケージ

脆弱性の種類

CVSSスコア

主な影響

CVE-2025-6514

mcp-remote

OSコマンドインジェクション

9.6(Critical)

クライアントマシンでのリモートコード実行

CVE-2025-53967

figma-developer-mcp

OSコマンドインジェクション

7.5(High)

ホストマシンでのリモートコード実行

CVE-2025-53109

Anthropic Filesystem Server

相対パストラバーサル

8.4(High)

サンドボックスエスケープ、任意ファイルアクセス

CVE-2025-5277

aws-mcp-server

OSコマンドインジェクション

9.6(Critical)

ホストシステムでの任意コマンド実行

CVE-2025-54994

@akoskm/create-mcp-server-stdio

OSコマンドインジェクション

9.3(Critical)

信頼できないユーザー入力によるコマンド実行

CVE-2025-59333

@executeautomation/database-server

不適切なアクセス制御

8.1(High)

read-onlyモードのバイパス

以下、特に影響が大きかった3つの脆弱性について詳しく解説します。

CVE-2025-6514:mcp-remoteのリモートコード実行

CVE-2025-6514は、2025年で影響が大きかったMCPの脆弱性です。

mcp-remoteは、Claude DesktopのようなローカルAIクライアントをリモートのMCPサーバーに接続するために使われるパッケージで、43万7000回以上ダウンロードされていました。この脆弱性の深刻な点は、悪意のあるMCPサーバーに接続するだけで、クライアント側でリモートコード実行が可能になることです。

攻撃の仕組みはこうです。攻撃者が用意したMCPサーバーは、認証エラー(401 Unauthorized)のレスポンスに、特別に細工されたURLを含めます。mcp-remoteはこのURLを適切に検証せず、OSのシェルに直接渡してしまうため、攻撃者は任意のコマンドを実行できました。

修正版はバージョン0.1.16で、現在は対策済みです。

CVE-2025-53967:figma-developer-mcpのコマンドインジェクション

CVE-2025-53967は、figma-developer-mcpサーバーのフォールバック機構に存在した脆弱性です。

このサーバーは、標準のfetch API呼び出しが失敗した場合、curlコマンドを使った処理にフォールバックする仕組みを持っていました。問題は、URLやヘッダーの値が検証されずにcurlコマンドに直接挿入されていたことです。攻撃者は、シェルのメタ文字(|&&など)を含むURLを送信することで、任意のコマンドを実行できました。

この脆弱性は2025年9月29日にリリースされたバージョン0.6.3で修正されています。

CVE-2025-53109/53110:Anthropic Filesystem Serverのサンドボックスエスケープ

CVE-2025-53109とCVE-2025-53110は、Anthropic公式のFilesystem MCP Serverに存在した一対の脆弱性です。

このサーバーは、AIエージェントが指定されたディレクトリ内でのみファイル操作を行えるように、サンドボックス機能を提供していました。しかし、2つの方法でこのサンドボックスが突破できることが判明しました。

1つ目は、単純なプレフィックスチェックのバイパスです(CVE-2025-53110)。許可されたディレクトリが/private/tmp/allow_dirの場合、/private/tmp/allow_dir_evilのような名前のディレクトリを要求することで、チェックをすり抜けることができました。

2つ目は、シンボリックリンクを使ったバイパスです(CVE-2025-53109)。許可されたディレクトリ内に、/etc/passwdのようなシステムファイルを指すシンボリックリンクを作成することで、サンドボックス外のファイルにアクセスできました。

これらの脆弱性は、公式実装でさえ適切なパス検証が簡単ではないことを示しています。現在はパッチが適用されています。

その他の重要な脆弱性

上記以外にも、以下の脆弱性が報告されています。

  • CVE-2025-5277(aws-mcp-server): AWSリソースを操作するMCPサーバーでのコマンドインジェクション
  • CVE-2025-54994(create-mcp-server-stdio): MCPサーバーのテンプレート生成ツールでのコマンドインジェクション
  • CVE-2025-59333(database-server): データベースサーバーのread-onlyモードが適切に機能せず、書き込み操作が可能になる問題

これらはすべて、基本的な入力検証の不備が原因です。

なぜこれらの脆弱性が発生したのか

MCPサーバーで発見された脆弱性の根本原因は、技術的な問題というより、開発の優先順位の問題と考えられます。

発見された脆弱性の大半は、OSコマンドインジェクション(CWE-78)という、古典的かつよく知られたセキュリティエラーでした。これは、ユーザーからの入力を検証せずにシェルコマンドに直接渡すことで発生します。このような脆弱性は、入力のサニタイズや安全なAPIを使うことで防げます。

他には、「デフォルトで安全でない(insecure-by-default)」設計文化が考えられます。Trend Microの調査では、492台のMCPサーバーが認証も暗号化もなしにインターネットに公開されていることが判明しました。これらのサーバーにはハードコードされた認証情報が含まれていることも多く、プライベートデータやクラウドリソースへの開かれたバックドアになっていました。

さらに、Astrix Securityのレポートによれば、分析されたサーバーの53%が、安全でない長期間有効な静的シークレット(APIキーなど)に依存していました。一方で、OAuthのような現代的で安全なプロトコルを使用しているのはわずか8.5%でした。

これらの問題の背景には、競争優位性のためにエージェント型AI機能の迅速な開発・リリースを優先した事情が汲み取れます。その結果、入力検証や認証といった基本的なセキュリティ対策を後回しになったと考えられます。

現在の状況:修正されているのか?

結論から言うと、2025年に発見された主要な脆弱性はすでに修正されています。

以下、主要パッケージの修正状況をまとめました。

パッケージ

脆弱性のあるバージョン

修正済みバージョン

修正時期

mcp-remote

0.1.15以前

0.1.16以降

2025年

figma-developer-mcp

0.6.2以前

0.6.3以降

2025年9月29日

Anthropic Filesystem Server

初期バージョン

パッチ適用済み

2025年

ただし、修正されているからといって安心できるわけではありません。以下の点に注意が必要です。

古いバージョンを使い続けているリスク

パッケージマネージャーで依存関係のバージョンを固定している場合、自動的には更新されません。package.json"mcp-remote": "0.1.15"のように固定していると、脆弱なバージョンのままになります。定期的に依存関係を確認し、セキュリティアップデートを適用する必要があります。

新しい脆弱性が発見される可能性

2025年に発見された脆弱性は修正されましたが、MCPエコシステムは急速に成長しており、新しいパッケージや機能が次々と追加されています。これらの中に、まだ発見されていない脆弱性が含まれている可能性は否定できません。

公開されたMCPサーバーの存在

Trend Microの調査時点(2025年)で、492台のMCPサーバーが適切な認証なしにインターネットに公開されていました。これらのサーバーが現在も稼働しているかは不明ですが、設定ミスによる露出は依然として問題です。

修正状況を確認する方法は、使用しているパッケージのバージョンをチェックすることです。npmの場合、npm listコマンドで依存関係のバージョンを確認できます。脆弱性スキャンツール(npm auditなど)を使えば、既知の脆弱性を自動検出できます。

MCPサーバーを安全に使うための対策

MCPサーバーに関わる立場によって、必要なセキュリティ対策は異なります。ここでは、開発者向けと利用者向けに分けて対策を紹介します。

開発者向け:MCPサーバーを構築・運用する場合

MCPサーバーを開発・運用する場合は、以下の対策を実施してください。

1. MCP公式ドキュメントのセキュリティベストプラクティスに従う

MCPの公式仕様には、Security Best Practicesが定義されています。これは、MCP実装における具体的なセキュリティリスクと対策をまとめたドキュメントです。

特に重要なのは、「Confused Deputy Problem(混乱した代理人問題)」への対策です。これは、MCPサーバーが他のAPIにプロキシする際に発生する脆弱性で、攻撃者がサーバーの権限を悪用する可能性があります。公式ドキュメントでは、OAuth 2.1のセキュリティベストプラクティスに準拠し、適切なトークン管理を行うことが推奨されています。

MCPサーバーを構築する際は、まずこの公式ドキュメントを確認し、仕様に準拠した実装を行ってください。

2. 依存関係を定期的に更新し、バージョンを管理する

MCPパッケージの依存関係は、定期的に更新する必要があります。ただし、無計画に最新版に更新すると、予期しない動作を引き起こす可能性があるため、バージョンを固定しつつ、セキュリティパッチは迅速に適用する運用が推奨されます。

具体的には、package.jsonでメジャーバージョンを固定し(例:"mcp-remote": "^0.1.16")、npm auditDependabotのような自動スキャンツールで脆弱性を検出します。脆弱性が見つかった場合は、修正版へのアップデートを優先的に実施します。

3. 認証にはOAuthを使い、静的シークレットを避ける

Astrix Securityのレポートによれば、MCPサーバーの53%が安全でない静的シークレット(APIキーなど)を使用しています。静的シークレットは漏洩リスクが高く、一度漏れると広範囲に影響します。

可能であれば、OAuth 2.1のような現代的な認証プロトコルを使用してください。静的シークレットを使わざるを得ない場合は、以下の対策を講じます。

  • シークレットをコードにハードコードせず、環境変数や専用のシークレットマネージャー(AWS Secrets Manager、HashiCorp Vaultなど)で管理する
  • シークレットに有効期限を設定し、定期的にローテーションする
  • アクセス権限を最小限に絞る(読み取り専用で済むなら書き込み権限は付与しない)

4. 入力検証を徹底し、安全なAPIを使う

コマンドインジェクションを防ぐには、ユーザーからの入力を決してシェルに直接渡さないことです。

Node.jsの場合、child_process.execは危険です。代わりにchild_process.execFilechild_process.spawnを使い、コマンドと引数を分離して渡します。これにより、シェルのメタ文字が解釈されなくなります。

また、ファイルパスを扱う場合は、パストラバーサル対策として、パスを正規化(path.resolveなど)してから、許可された範囲内かを検証します。シンボリックリンクのチェックも必要です。

5. すべてのツール呼び出しをログに記録し、監視する

AIエージェントが実行するすべてのMCPツール呼び出しをログに記録します。ログには、以下の情報を含めます。

  • 呼び出されたツール名
  • 入力パラメータ
  • 実行結果
  • 実行したユーザーID

これらのログを分析することで、異常なパターン(過剰なデータアクセス、不審なコマンド実行など)を検出できます。

利用者向け:MCPサーバーに接続して使う場合

Claude DesktopなどのクライアントからMCPサーバーに接続して使う場合は、以下の対策を実施してください。

1. 信頼できるMCPサーバーにのみ接続する

未知のMCPサーバーに安易に接続することは避けてください。接続前に、以下の点を確認します。

  • サーバーの提供元が公式リポジトリや評判の良い開発者か
  • サーバーのソースコードが公開されており、レビューされているか
  • ダウンロード数やコミュニティの評価が十分にあるか

特に、SNSやフォーラムで見つけた未検証のサーバーには注意が必要です。可能であれば、組織内で承認されたサーバーのみを使用してください。

2. クライアントソフトウェアを最新版に保つ

mcp-remoteやClaude Desktopなど、MCPクライアントソフトウェアは定期的に更新してください。

CVE-2025-6514のように、クライアント側の脆弱性も発見されています。セキュリティアップデートの通知があれば、できるだけ早く適用します。パッケージマネージャーを使用している場合は、npm updateなどで定期的に更新を確認してください。

3. HTTPS接続を使用し、安全でないネットワークを避ける

MCPサーバーへの接続には、可能な限りHTTPS(暗号化された接続)を使用してください。

HTTPでの接続は、中間者攻撃のリスクがあります。また、公共Wi-Fiやカフェなどの安全でないネットワークでMCPサーバーに接続することは避けてください。機密データを扱う場合は、VPNの使用も検討してください。

4. 接続するサーバーに最小限の権限のみ付与する

MCPサーバーに接続する際、要求される権限を慎重に確認してください。

ファイルシステムへのアクセスを要求されたら、本当に必要な範囲のみに制限します。例えば、ドキュメント作成用のサーバーであれば、ドキュメントフォルダのみへのアクセスに限定し、システムディレクトリへのアクセスは許可しません。定期的に接続設定を見直し、不要になった権限は削除してください。

5. 定期的にアクセスログと動作を確認する

接続しているMCPサーバーの動作を定期的に確認してください。

クライアントのログを確認し、予期しないツール呼び出しやデータアクセスがないかチェックします。不審な動作を検知したら、即座に接続を切断し、認証情報を変更してください。また、接続履歴を定期的に確認し、使用していないサーバーへの接続は削除します。

まとめ

MCPサーバーの脆弱性に関する重要なポイントをまとめます。

  • 2025年にMCPサーバーで発見された脆弱性の大半は、基本的なコマンドインジェクション(CWE-78)でした
  • 最も影響が大きかったCVE-2025-6514(mcp-remote)は、43万7000回以上ダウンロードされたパッケージに存在しました
  • Anthropic公式のFilesystem Serverにもサンドボックスエスケープの脆弱性が見つかりました
  • これらの脆弱性の根本原因は、セキュアコーディングの軽視と「デフォルトで安全でない」設計文化です
  • 主要な脆弱性はすでに修正されていますが、依存関係の定期的な更新が必須です
  • 開発者は、OAuth認証の使用、入力検証の徹底、脆弱性スキャンの自動化、ログ記録と監視が重要です
  • 利用者は、信頼できるサーバーのみに接続し、最小限の権限を付与し、定期的に動作を確認することが重要です

MCPは強力なプロトコルですが、開発者・利用者ともに適切なセキュリティ対策を講じることが不可欠です。基本的なセキュリティ原則を守り、継続的な監視を行うことで、安全に活用できます。

よくある質問

MCPサーバーは本番環境で使っても安全?

適切なセキュリティ対策を講じれば、本番環境でも使用できます。ただし、2025年に発見された脆弱性の多くが基本的なセキュリティエラーだったことを考えると、無条件に安全とは言えません。依存関係の管理、認証設定、入力検証、継続的な監視といった基本的な対策を実施した上で、段階的に導入することを推奨します。

mcp-remoteの最新バージョンを使えば安全?

バージョン0.1.16以降であれば、CVE-2025-6514の脆弱性は修正されています。ただし、安全に使うためには、信頼できるMCPサーバーにのみ接続し、可能な限りHTTPS接続を使用することが重要です。また、中間者攻撃のリスクを減らすため、公共のWi-Fiなどの安全でないネットワークでの使用は避けてください。

ローカル開発環境でも脆弱性のリスクはある?

あります。CVE-2025-53967やCVE-2025-53109のように、ローカルで実行されるツールにも深刻な脆弱性が発見されました。ローカルツールは中間者攻撃やDNSリバインディングといったネットワークベースの攻撃に晒される可能性があり、そこから企業ネットワーク全体への侵入経路になり得ます。開発環境も本番環境と同様のセキュリティ基準で管理する必要があります。

新しいMCPパッケージを使い始める前に確認すべきことは?

まず、パッケージの信頼性を確認してください。公式リポジトリやよく知られた開発者が提供しているか、ダウンロード数やGitHubスターが十分にあるかをチェックします。次に、npm auditなどで既知の脆弱性がないか確認します。可能であれば、コードレビューを行い、特にchild_process.execのような危険なAPIの使用や、ハードコードされたシークレットがないかを確認してください。

プロンプトインジェクション攻撃とは何?MCPとどう関係する?

プロンプトインジェクション攻撃とは、AIエージェントが処理するデータに悪意のある指示を埋め込み、意図しないアクションを実行させる攻撃です。MCPでは、この攻撃が成功すると、エージェントが接続されたMCPツールを悪用して、ファイル削除やデータ漏洩といった実世界のアクションを引き起こす可能性があります。対策として、エージェントの権限を最小限に絞り、すべてのツール呼び出しをログに記録し、異常な動作を検出する仕組みが必要です。