FastMCP — это Pythonic-способ создания серверов и клиентов MCP. До версии 3.2.0 OpenAPIProvider в FastMCP предоставляет внутренние API клиентам MCP путем анализа спецификаций OpenAPI. Класс RequestDirector отвечает за создание HTTP-запросов к внутренней службе.
В методе _build_url() существует уязвимость. Когда операция OpenAPI определяет параметры пути (например, /api/v1/users/{user_id}), система напрямую подставляет значения параметров в строку шаблона URL-адреса без кодирования URL-адреса. Впоследствии urllib.parse.urljoin() разрешает конечный URL.
Поскольку urljoin() интерпретирует последовательности ../ как обход каталога, злоумышленник, управляющий параметром пути, может выполнять атаки обхода пути, чтобы избежать предполагаемого префикса API и получить доступ к произвольным конечным точкам серверной части. Это приводит к аутентификации SSRF, поскольку запросы отправляются с заголовками авторизации, настроенными в поставщике MCP. Эта проблема исправлена в версии 3.2.0.
Показать оригинальное описание (EN)
FastMCP is a Pythonic way to build MCP servers and clients. Prior to version 3.2.0, the OpenAPIProvider in FastMCP exposes internal APIs to MCP clients by parsing OpenAPI specifications. The RequestDirector class is responsible for constructing HTTP requests to the backend service. A vulnerability exists in the _build_url() method. When an OpenAPI operation defines path parameters (e.g., /api/v1/users/{user_id}), the system directly substitutes parameter values into the URL template string without URL-encoding. Subsequently, urllib.parse.urljoin() resolves the final URL. Since urljoin() interprets ../ sequences as directory traversal, an attacker controlling a path parameter can perform path traversal attacks to escape the intended API prefix and access arbitrary backend endpoints. This results in authenticated SSRF, as requests are sent with the authorization headers configured in the MCP provider. This issue has been patched in version 3.2.0.
Характеристики атаки
Последствия
Строка CVSS v4.0