W bibliotece FastMCP (wersje przed 3.2.0) błąd w metodzie _build_url() klasy RequestDirector umożliwia atakującemu wykonanie ataku path traversal oraz authenticated SSRF poprzez przekazanie spreparowanych wartości parametrów ścieżki URL. Podatność otrzymała maksymalny wynik CVSS 10.0, co czyni ją krytycznym zagrożeniem dla każdego środowiska korzystającego z OpenAPIProvider.
▸ Pokaż oryginał (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.
Klasa RequestDirector w komponencie OpenAPIProvider odpowiada za budowanie żądań HTTP do usług backendowych na podstawie specyfikacji OpenAPI. Metoda _build_url() wstawia wartości parametrów ścieżki (np. {user_id}) bezpośrednio do szablonu URL bez uprzedniego kodowania (URL-encoding). Następnie funkcja urllib.parse.urljoin() rozwiązuje końcowy adres URL, a ponieważ interpretuje sekwencje ../ jako przechodzenie po katalogach (path traversal), atakujący kontrolujący wartość parametru ścieżki może wydostać się poza zamierzony prefiks API. Spreparowane żądanie jest wysyłane do dowolnego endpointu backendowego wraz z nagłówkami autoryzacyjnymi skonfigurowanymi w dostawcy MCP, co stanowi authenticated SSRF.
Atakujący może ominąć zamierzone ograniczenia API i uzyskać dostęp do dowolnych wewnętrznych endpointów backendowych, a żądania są wykonywane z pełnymi nagłówkami autoryzacyjnymi ofiary, co może prowadzić do ujawnienia poufnych danych, modyfikacji zasobów lub dalszego ruchu bocznego (lateral movement) w sieci wewnętrznej.
Należy zaktualizować FastMCP do wersji 3.2.0 lub nowszej, w której problem został naprawiony. Poprawka dostępna jest w repozytorium GitHub (commit 40bdfb6b1de0ce30609ee9ba5bb95ecd04a9fb71) oraz w oficjalnym wydaniu v3.2.0.
Jlowin FastMCP (PrefectHQ/fastmcp) we wszystkich wersjach przed 3.2.0 korzystających z komponentu OpenAPIProvider.
Podatność zgłoszona i załatana w ramach GitHub Security Advisory GHSA-vv7q-7jx5-f767. Poprawka wprowadzona w wersji 3.2.0 opublikowanej przez PrefectHQ.
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:XJlowin Fastmcp
APPJlowin< 3.2.0
Powiązane podatności
FastMCP is the standard framework for building MCP applications. Prior to version 3.2.0, while testing the Git...
FastMCP is the standard framework for building MCP applications. Prior to version 2.14.2, the server does not ...
FastMCP is the standard framework for building MCP applications. Prior to version 3.2.0, server names containi...
FastMCP is the standard framework for building MCP applications. Versions prior to 2.13.0 have a reflected cro...
FastMCP is the standard framework for building MCP applications. Versions prior to 2.13.0, a command-injection...