MCPサーバー接続の罠:情報漏洩を防ぐ4つの攻撃パターンと7つの必須チェックリスト

AI・テクノロジー
STΛCKHUB ANALYSIS2026.09.24 13:00
📌 30秒でわかるこの記事の要点
⏱ 読了目安: 約5分
  • MCPサーバーはAIが動的に機能を呼び出す仕組みだが、仕様上、認可や承認が任意であり、接続するだけで情報漏洩のリスクを抱える。
  • 間接プロンプトインジェクションやツールポイズニングにより、AIが意図せず非公開データを外部へ送信する脆弱性が報告されている。
  • 開発者はサーバーの提供元確認、最小権限の付与、自動承認の無効化など、7つのチェックリストを運用フローに組み込む必要がある。

MCPの利便性と引き換えにするセキュリティの代償

開発現場において、Claude CodeやAntigravityといったAIエージェントが、MCP(Model Context Protocol)を介して業務システムとシームレスに連携する光景は、もはや日常になりつつある。しかし、この「接続するだけで何でもできる」という魔法のような体験の裏側で、我々エンジニアは重大なセキュリティの穴を放置していないだろうか。MCPの仕様は、AIが実行時にツールの一覧を動的に取得し、その説明文を解釈して自律的に判断を下すという極めて柔軟なアーキテクチャを採用している。これはAPIの設計思想とは根本的に異なる。従来のREST APIであれば、開発者がエンドポイントを定義し、プログラムがそのフローを制御していた。しかしMCPでは、ツールポイズニングという手法により、サーバー側が提供する「説明文」そのものがAIの行動を左右するトリガーとなり得るのだ。

実際に、GitHubのMCPサーバーを介した非公開リポジトリの漏洩事例は、我々に冷や汗をかかせるには十分な教訓となった。攻撃者は公開リポジトリに細工したissueを1件作成するだけで、それを読み込んだAIエージェントを乗っ取り、本来アクセス権のない非公開データへアクセスさせることが可能だ。これはサーバー側のコードに欠陥があるわけではなく、AIエージェントの設計思想そのものに起因する問題である。我々が「信用できるサーバー」を選んだとしても、そのサーバーが運んでくる「文章」までを信用してはならないという、極めて高度な警戒心が求められている。仕様書に書かれた「推奨」という言葉を「無視しても良い」と解釈するエンジニアは、早晩、深夜の障害対応で泣きを見ることになるだろう。

4つの攻撃パターンと現場が取るべき防衛策

現在、MCPサーバーに関連する脅威は大きく4つのパターンに分類できる。まず、AIがツールを選択する際に読む説明文に悪意ある指示を仕込む「ツールポイズニング」。次に、外部第三者の書き込みをAIに読ませることで発生する「間接プロンプトインジェクション」。そして、過剰な権限付与や有効期間の長いキーの使用による「被害の拡大」。最後に、これらを放置する「自動承認(Human in the Loopの欠如)」である。特に、Astrix Securityの調査によれば、オープンソースのMCPサーバーの53%が有効期間の長い固定キーに依存しており、これが一度漏洩すれば、攻撃者は長期間にわたりシステムを掌握し続けることが可能だ。これは、デッドロックやメモリリークといった従来のバグとは異なり、一度発生すれば組織の信頼を根底から揺るがす致命的なインシデントとなる。

以下の表は、MCPサーバーを導入する前に確認すべき7つのチェックリストである。これらは単なるガイドラインではなく、実務における「防波堤」である。

項目 確認内容 防ぐパターン
提供元とバージョン 信頼できるソースか、最新版か ツールポイズニング
外部書き込みの有無 issueやPDF等を読み込むか 間接プロンプトインジェクション
追加スコープ 自分だけか、チーム共有か 過剰な権限
最小権限 不要なツールを外しているか 過剰な権限
キーの管理 取り消し可能なトークンか 有効期間の長いキー
承認の既定 「常に許可」を避けているか 自動承認
実行環境の確認 CI等で無人実行していないか 自動承認

特に注意すべきは、Claude Codeの「claude -p」やAgent SDKを用いた自動実行環境だ。これらは対話型の承認プロセスをバイパスするため、無意識のうちに攻撃者の指示をシステム内部で実行してしまうリスクがある。我々エンジニアは、AIの利便性を享受する一方で、その「自律性」が持つ危険性を常に疑い、サンドボックス環境での検証や、最小権限の原則を徹底しなければならない。AIエージェントを「信頼できる同僚」として扱うのではなく、「常に裏切る可能性のある外部プログラム」として扱うくらいの慎重さが、今の時代には必要なのではないだろうか。

AI時代のエンジニアに突きつけられた問い

MCPという新しいプロトコルは、AIとシステムの距離を劇的に縮めた。しかし、その距離の短縮は、同時に攻撃者との距離も縮めている。我々が直面しているのは、単なるツールの脆弱性ではなく、AIが「文脈」を理解して動くという新しいパラダイムにおける、セキュリティ境界の消失である。仕様が「認可は任意」「人の確認は推奨」と定めている以上、安全性を担保するのは最終的に現場のエンジニアの良識と設定能力に委ねられている。これは、かつてWeb開発の黎明期にSQLインジェクションやXSSの脅威に直面した我々が、必死にエスケープ処理やバリデーションを学んだ歴史の再来と言えるかもしれない。

明日から、あなたが担当するプロジェクトでMCPサーバーを追加する際、その設定ファイル(.mcp.jsonやconfig.toml)を、コードレビューと同じ厳格さでチェックできるだろうか?「便利だから」という理由だけで、チーム全体に共有されるスコープに未知のサーバーを追加していないだろうか?AIエージェントの暴走を止めるのは、AIの賢さではなく、我々が設定する「制約」の強さである。もし、あなたが今、MCPサーバーの権限設定を「とりあえず全部許可」にしているのなら、それは時限爆弾を抱えて開発しているのと同義である。技術の進化を止めることはできないが、その進化を制御下に置くための「疑う力」を、我々はどれだけ磨き続けられるだろうか。あなたの開発環境は、本当に安全と言い切れるのか。その問いに対する答えを、今すぐ設定ファイルの中に探しに行くべきである。

🏷 関連トピック・技術タグ:
#MCP#AIエージェント#セキュリティ#Claude#GitHub
Published at 13:00

コメント

タイトルとURLをコピーしました