概要
FastMCP は MCP(Model Context Protocol)サーバー を Python で 構築 する ための ライブラリ です。3.2.0 より 前 の バージョン で、OpenAPIProvider の RequestDirector._build_url() メソッド に パス トラバーサル を 利用 した SSRF 脆弱性 が 存在 します。
OpenAPI 仕様 で パス パラメータ(例: /api/v1/users/{user_id})が 定義 されて いる 場合、パラメータ 値 が URL テンプレート に URL エンコーディング なし で 直接 展開 されます。その後 urllib.parse.urljoin() で 最終 URL が 解決 される ため、../ シーケンス に よる ディレクトリ トラバーサル で 意図 した API プレフィックス から 脱出 し、バックエンド の 任意 の エンドポイント に リクエスト を 送信 可能 です。リクエスト は MCP プロバイダー に 設定 された 認可 ヘッダー 付き で 送信 されるため、認証 済み SSRF と なります。
CVSS ベクトル
| 項目 | 値 |
|---|---|
| CVSS スコア | 10.0(Critical) |
| 攻撃 元区分 | ネットワーク |
| 攻撃 条件 の 複雑さ | 低 |
| 必要 な 特権 | 不要 |
| ユーザー 関与 | 不要 |
| CWE | CWE-918(SSRF) |
影響 を 受ける ソフトウェア
| 製品 | ベンダー | 影響 バージョン |
|---|---|---|
| FastMCP | PrefectHQ | 3.2.0 より 前 の 全 バージョン |
影響 の 範囲
この 脆弱性 は CVSS 10.0 の 最高 スコア が 付与 されて おり、攻撃 の 複雑さ が 低く、認証 や ユーザー 操作 も 不要 です。FastMCP を 使って MCP サーバー を 構築 し、OpenAPI バックエンド と 連携 して いる 環境 では、攻撃者 が MCP クライアント 経由 で 内部 API や クラウド メタデータ エンドポイント に アクセス できる 可能性 が あります。特に 本番 環境 で 内部 サービス と 接続 して いる 場合 は、情報 漏洩 や 横方向 の 移動 に 悪用 される リスク が あります。
修正 バージョン と 回避策
- 修正: FastMCP 3.2.0 へ アップデート
- パス パラメータ の URL エンコーディング が 追加 されました
- 回避策 として は、信頼 できない ユーザー から の パス パラメータ 入力 を 制限 する こと が 考えられます
関連 リンク
データソース: NVD (NIST), GitHub Advisory Database AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
