何が起きたか
Cycodeは、公式MCP Python SDK(1.9.1〜1.29.1および2.0.0〜2.1.1、マシン間プロバイダー向けCVSS 7.5)の欠陥を文書化しました。OAuthディスカバリ中に、悪意のあるMCPサーバーが404を返し、SDKをレガシーフォールバックパスに強制し、そこでサーバーのOAuth設定を信頼し、宣言された発行者を検証しません。SDKは認証コード、クライアント秘密情報、PKCEベリファイアを攻撃者制御のトークンエンドポイントに送信し、PKCEを無効化してAIエージェントアカウントの有効なトークンを取得します。1.30.0および2.2.0で修正され、認証サーバーの発行者を検証します。
なぜ重要か
OAuthを使用するHTTPベースのMCPクライアント(Google、Okta、Entra ID)は、不正なサーバーに長期有効な資格情報を渡すよう騙される可能性があります。これは、MCPサーバーを自律的に選択するエージェントにとって特に危険であり、乗っ取られたレジストリエントリ、タイポスクワット、DNSハイジャック、またはプロンプトインジェクションの影響を受けた選択がクライアントをリダイレクトさせる可能性があります。修正版では、ClientCredentialsOAuthProvider/PrivateKeyJWTOAuthProviderにissuer=を明示的に渡す必要があります。アップグレードだけでは不十分です。
攻撃経路
悪意のある/侵害されたMCPサーバーがクライアントをレガシーOAuthディスカバリフォールバックに誘導し、認証コード、クライアント秘密情報、PKCEベリファイアを受け取る
影響を受けるシステム
公式MCP Python SDK 1.9.1〜1.29.1および2.0.0〜2.1.1(OAuthを使用するHTTPベースのMCPクライアント)
緩和策
MCP Python SDK 1.30.0(1.x)または2.2.0(2.x)にアップグレードし、予期されるissuer=パラメータを設定し、露出したクライアント秘密情報をローテーションし、信頼されていないサーバーに接続したアプリのトークンを失効させる