注目★★★★★GitHub Advisory
MCP Python SDK の WebSocket サーバ、Host/Origin 検証がなくクロスオリジン接続可能
30秒で把握
- 1MCP Python SDK の deprecated WebSocket トランスポートが Host/Origin ヘッダ検証なし
- 2クロスオリジン接続が可能となり、ブラウザベースの攻撃でサーバが到達可能になる可能性
- 3ASGI アプリケーションに websocket_server を直接統合した場合のみ対象・stdio/SSE/HTTP は非該当
要約
MCP Python SDK の WebSocket サーバトランスポート (`mcp.server.websocket.websocket_server`) は、ホストヘッダとオリジンヘッダの検証を行わずに WebSocket ハンドシェイクを受け入れていた。SSE や Streamable HTTP トランスポートが使用する `TransportSecuritySettings` メカニズムが WebSocket トランスポートに実装されていなかったため、接続元オリジンを制限する SDK レベルの手段がなかった。ブラウザがクロスオリジン WebSocket リクエストに Origin ヘッダを付与する一方で応答に同一オリジンポリシーを強制しないため、任意のオリジンから到達可能な MCP サーバへの接続が可能だった。このトランスポートは MCP 仕様の一部ではなく deprecated 扱いで、FastMCP 経由では使用できないが、ASGI アプリケーションに直接統合する開発者が対象となる。
あなたへの影響
本体の stdio / SSE / Streamable HTTP トランスポートを使用していればこの脆弱性の影響は受けません。
推奨:WebSocket サーバトランスポートを自前で ASGI アプリケーションに統合している場合は、影響を確認し、必要に応じてアップデートまたはオリジン検証の手動追加を検討してください。