何が起きたか
MCP TypeScript SDKのHTTPクライアントトランスポートとOAuthクライアント関数は、カスタムヘッダーと(307/308の場合)リクエストボディを保持したままクロスオリジンリダイレクトに従いました。したがって、悪意のあるまたは侵害されたMCPまたは認証サーバーが、OAuthリフレッシュトークン、クライアントシークレット、APIキー、セッション識別子を受け取る可能性があります。
なぜ重要か
MCPクライアントは、エージェントが行動できるようにする資格情報を保持しています。トランスポート上の単一のクロスオリジンリダイレクトが、エージェントをダウンストリームサービスに認証するOAuthリフレッシュトークンまたはクライアントシークレットを外部に持ち出し、信頼されたエージェント統合からの資格情報盗難を可能にします。
攻撃経路
HTTPクライアントトランスポートとOAuthクライアントリクエストは、カスタムリクエストヘッダーと、HTTP 307/308の場合にはリクエストボディを保持したまま、異なるオリジンへのリダイレクトに従います。カスタムヘッダー(mcp-session-idを含む)と、refresh_tokenおよびclient_secretを含むOAuthリクエストボディが、リダイレクトされたオリジンに再送信される可能性があります。
影響を受けるシステム
@modelcontextprotocol/sdk < 1.32.0; @modelcontextprotocol/client >= 2.0.0, < 2.3.0
緩和策
@modelcontextprotocol/sdk 1.32.0 / @modelcontextprotocol/client 2.3.0にアップグレードしてください。アドバイザリ: https://github.com/modelcontextprotocol/typescript-sdk/security/advisories/GHSA-6prh-2h8m-c8cw