Edison Watch

MCPマルウェアリスク

STDIO MCPサーバーが管理されていない攻撃面を作成する仕組み - RCEにつながるサプライチェーン攻撃、rug pull攻撃、そして「ローカル」が「データ漏洩から安全」を意味しない理由。

2種類のMCPサーバー

MCPプロトコルは、AIクライアントをツールサーバーに接続するための2つのトランスポートメカニズムをサポートしています:

STDIO (Standard I/O) - AIクライアントがユーザーのマシン上でローカルプロセスを起動します。クライアントとサーバーはプロセスのstdin/stdoutパイプを介して通信します。サーバーコードはユーザーの完全な権限、ファイルシステムアクセス、ネットワークアクセスでローカルに実行されます。

HTTP (Streamable HTTP / SSE) - AIクライアントがHTTPを介してリモートサーバーに接続します。サーバーは管理されたインフラストラクチャ上で実行され、すべての通信は観察、フィルタリング、制御可能なネットワークを通過します。

現在利用可能なほとんどのMCPサーバー - npxuvxでインストールされるもの - はSTDIOトランスポートを使用しています。これには重大なセキュリティ上の影響があります。

サプライチェーン攻撃 → リモートコード実行

STDIO MCPサーバーの最も重大なリスクは、1つをインストールすることがユーザーのマシンで任意のコード実行を許可するのと同等だということです。npx / uvxの実行モデルは、AIツールに適用された「curl | bash」アンチパターンです:

  • lockfileなし、ハッシュ検証なし、署名チェックなし
  • 各呼び出しで新しく公開された悪意のあるバージョンをサイレントに取得可能
  • 起動されたプロセスはファイルシステム、ネットワーク、環境への完全なアクセスを持つ

これは既に実際の攻撃につながっています:

「ローカル」はデータ漏洩から安全を意味しない

人気のMCPサーバー(GitHub、Slack、Notion、Linear、データベース)の大多数は、リモートHTTP APIの薄いローカルラッパーです。開発者がnpx @modelcontextprotocol/server-githubを実行すると、以下を行うローカルプロセスが起動します:

  • GitHubのAPIへのアウトバウンドHTTPS呼び出し
  • 環境にPersonal Access Tokenを保持
  • ファイルシステムとネットワークへの完全なアクセス
  • 他のHTTPSリクエストと区別がつかないトラフィックを生成

ネットワーク監視の観点から、「ローカル」はデータ漏洩から安全を意味しません。STDIOトランスポートは、AIクライアントがプロセスとどのように通信するかを記述するだけで、そのプロセスがネットワークで何をするかについては何も言いません。

「Rug pull」攻撃

MCPサーバーは、ユーザーが承認した後にツール定義を変更できます:

  1. サーバーが最初の接続でクリーンで無害なツール定義を返す
  2. ユーザーがレビューして承認
  3. その後のtools/list呼び出しで、サーバーが漏洩指示を含む変更された定義を返す
  4. AIエージェントが新しい指示を正当なものとして扱う

MCPプロトコルには、初期ハンドシェイク後にスキーマの整合性を検証するメカニズムがありません。

なぜこれがシャドーITなのか

セキュリティリーダーの観点から、STDIO MCPサーバーは統治不能です:

機能STDIOサーバー管理されたHTTPサーバー
ネットワークレベルのブロック不可能(アウトバウンドHTTPS)プロキシ/ファイアウォールでブロック
認証の取り消し各マシンで認証情報を探すIdP/ゲートウェイで即時
監査ログなしすべてのツール呼び出しを記録
DLP/コンテンツ検査不可能ゲートウェイがすべてのトラフィックを検査
サプライチェーン管理任意のnpmパッケージが実行検証済みレジストリ、バージョン固定
認証情報のローテーション手動、マシンごと自動、一元化
ポリシーの適用なしRBAC、レート制限、地域制限

Qualysはこの脅威クラスを"MCP Servers: The New Shadow IT for AI"と命名しました - 従業員が企業APIへの特権アクセスを持つ未検証のソフトウェアをインストールし、セキュリティチームから完全に見えない状態。

Edison Watchがこれらのリスクを軽減する方法

Edison WatchはAIクライアントとMCPサーバーの間にセキュリティゲートウェイとして位置します:

  • 依存関係の固定 - 初回実行時にMCPサーバーパッケージのバージョンをロックし、サイレントなサプライチェーン更新を防止
  • 隔離 - 新しいMCPサーバーは管理者が明示的に承認するまで隔離
  • ポリシーエンジン - CELベースのルールがトランスポートに関係なくデータの流れを制御
  • Lethal Trifectaの適用 - プライベートデータアクセス + 信頼できないコンテンツ + 外部通信が単一セッションで収束する場合に漏洩をブロック
  • 監査ログ - すべてのツール呼び出しがインシデント対応のための完全なコンテキストとともに記録