MCPの「S」はセキュリティを意味する
(elenacross7.medium.com)- MCPはLLMとツールを接続する標準プロトコルだが、デフォルトではセキュリティが適用されていない
- コマンドインジェクション、ツールポイズニング、定義改ざんなど、さまざまなセキュリティ脆弱性が存在する
- MCPには認証、暗号化、完全性検証の機能がなく、信頼しにくい構造になっている
- 現時点では、ScanMCPのようなツールで可視性と統制を確保することが最善の対応である
MCPとは何か、そしてなぜ重要なのか
- MCPはModel Context Protocolの略で、Claude、GPT、CursorのようなLLMがツールやデータと統合される方法の新しい標準である
- 「AIエージェントのためのUSB-C」と呼ばれるほど、標準化された接続方式を提供する
- MCPを通じてAIエージェントは次のような機能を実行する
- 標準化されたAPIでツールと接続する
- セッション状態を維持する
- コマンドを実行する(過度に自由に実行され得る)
- ワークフロー間でコンテキストを共有する
- しかし、デフォルトではセキュリティが適用されていない
- ユーザーに気づかれないままシステムにアクセスできるサイドチャネルを開いてしまう危険がある
MCPで発生する主なセキュリティ脆弱性
-
コマンドインジェクション脆弱性(Equixlyの調査)
- 2025年現在も、**コマンドインジェクションによるリモートコード実行(RCE)**が発生している
- Equixlyの調査によれば、MCPサーバー実装全体の43%以上が安全でないシェル呼び出しを使用している
- 攻撃者はツールの入力値にシェルコマンドを含めることで、信頼されたエージェントを通じてリモートコードを実行できる
-
ツールポイズニング(Tool Poisoning、Invariant Labs)
- 攻撃者が悪意ある命令をツールの説明文の中に隠しておく方式
- ユーザーの目には見えないが、AIはそれをそのまま認識して実行する
- 単純な数学演算のように見えるツールが、実際にはユーザーのシステム上でSSHキーや機密設定ファイルを読み取れる場合がある
-
静かなツール再定義(Rug Pull)
- ツールはインストール後に自ら定義を変更できる
- Day 1では正常だったツールが、Day 7には攻撃者のAPIキー収集ツールに変わっている可能性がある
- これはサプライチェーンセキュリティ問題の新しい形であり、LLM内部で発生する
-
クロスサーバーのツールシャドーイング
- 複数のMCPサーバーが1つのエージェントに接続されている場合、悪意あるサーバーが信頼されたサーバーの呼び出しを横取りしたりオーバーライドしたりできる
- その結果、次のような問題が発生し得る
- ユーザーに送ったように見せかけて、攻撃者にメールを送信する
- 隠されたロジックをツールに注入する
- エンコードされたデータを流出させる
MCPがまだ安全ではない理由
- MCPは次の点を優先している
- ✅ 容易な統合
- ✅ 統一されたインターフェース
- しかし、次の点が欠けている
- ❌ 認証標準がない
- ❌ コンテキスト暗号化がない
- ❌ ツールの完全性を確認できない
- ユーザーは、エージェントが実際にどの説明に基づいてツールを使っているのかを知ることができない
開発者とプラットフォーム運営者ができるセキュリティ対策
-
開発者
- 入力値検証を必須にする
- MCPサーバーとツールのバージョンを固定する(pinning)
- ツール説明から機密情報を取り除く
-
プラットフォーム運営者
- すべてのツールメタデータをユーザーに表示する
- サーバー更新時に完全性ハッシュを使用する
- セッションセキュリティを強制適用する
-
ユーザー
- 信頼できないMCPサーバーには接続しない
- セッションログを本番環境と同じように監視する
- 不審なツール更新を監視する
ScanMCP.comのアイデア提案
- ScanMCPは、次を実行するスキャナー兼ダッシュボードとして提案されている
- 接続されたMCPツールを監査する
- RCE、ツールポイズニング、セッション漏えいなどのリスクを検知する
- ユーザーが見る情報とエージェントが認識する情報を比較して可視化する
- 次のようなユーザーに有用かもしれない
- エージェントプラットフォームのセキュリティチーム
- AIインフラのスタートアップ
- 信頼ベースのツールを作りたい独立開発者
締めくくりの考え
MCPは強力なプロトコルだが、APIセキュリティの成熟度が不十分なまま、あまりにも速く導入されている
Secure-by-defaultの方式が導入されるまでは、ScanMCP.comのようなツールが可視性と統制力を確保する最善の方法である
- 結論: MCPの「S」はSecurityではない。だが、そうあるべきだ
1件のコメント
Hacker Newsのコメント
この記事は、数日前にInvariant Labsが公開したセキュリティノートで説明された攻撃シナリオ(ツールポイズニング、シャドーイング、MCPラグプル)を強調し、引用している。私はそのブログ記事の著者である
これらの攻撃は、大半がエアロックの間違った側にある別の例にすぎない。権限境界を越えているわけではなく、すでにできることを奇妙な方法でやっているだけだ
次のようなより良い設計を構想するという課題:
良い記事だが、これがすべてAI生成なのではないかと気になる
OはObservabilityを意味する。今週はMCPサーバーの探索と作成に深くのめり込んでいた
その通り。私も同じことを考えていた。メモを公開したときにはそこまで深く掘り下げなかったが
使っているソフトウェアが悪意のあるものでなく、安全に実装されていたとしても、それが望む形で使われていることをどう確認すればよいのだろうか?
EquixlyがテストしたMCPサーバー実装の43%以上に、安全でないシェル呼び出しがあった
MCPが何なのか気になる。何度もドキュメントを読もうとしたが、どんな問題を解決するのか理解できなかった。主に、AIエージェントに特有な点は何なのか、そして何十年も前から存在する決定論的エージェントには当てはまらない点は何なのかがわからない
私はMCPの本来の目的は、Anthropicがプロンプトと出力を盗み見て学習データを最大化することだと勝手に思っていた。これがすべてのAIモデル向けのミドルウェアなのだと初めて知った