ZeroHour

CVE-2026-59973

1

SSRF bypass of prior fix in FrontMCP and mcp-from-openapi OpenAPI $ref loading

CVSS 3.1
8.5 high
EPSS
Published
()
Modified
AI analysis

CVE-2026-59973 is a server-side request forgery (CWE-918) bypass of the previously published fix (GHSA-v6ph-xcq9-qxxj / CVE-2026-39885) for external $ref dereferencing in the mcp-from-openapi dependency used by FrontMCP's OpenAPI adapter. The fix added a denylist check on the parsed URL hostname string, but mcp-from-openapi 2.3.0 still does not resolve hostnames before validating, does not pin the validated IP to the fetch, does not revalidate redirect targets, and misses IPv4-mapped IPv6 loopback forms, so semantically equivalent loopback targets such as 127.0.0.1.nip.io, redirectors to 127.0.0.1, and [::ffff:127.0.0.1] still cause backend requests to localhost. An attacker who can cause a hosted or multi-user FrontMCP deployment to load an untrusted OpenAPI spec (via the adapter's untrusted url, spec, and loadOptions.refResolution inputs to OpenAPIToolGenerator.fromURL()/fromJSON()) can trigger requests from the server to loopback or private internal services during tool generation, yielding high confidentiality impact and limited integrity impact per the 8.5 CVSS score. Affected are FrontMCP deployments up to and including the latest release v1.2.1 and current main, as well as any direct consumer of npm mcp-from-openapi up to 2.3.0. No public proof-of-concept, KEV listing, or known in-the-wild exploitation is reported.

What to do: Until fixed releases beyond FrontMCP 1.2.1 and mcp-from-openapi 2.3.0 are available, avoid loading untrusted OpenAPI specs or disable external $ref resolution (refResolution) for untrusted specs, and block backend egress to loopback, link-local, and RFC1918 ranges at the network layer. Watch for patched versions of mcp-from-openapi that resolve and pin IPs and revalidate redirect targets before the fetch. Audit whether your FrontMCP deployment accepts user-supplied url or spec values in the OpenAPI adapter, as that is the required attack precondition.

Affected
FrontMCP / @frontmcp/adapters (npm: frontmcp, @frontmcp/adapters) OpenAPI adapterthrough 1.2.1 (latest release and current main branch both affected)
mcp-from-openapi (npm) mcp-from-openapithrough 2.3.0 (latest patched dependency; its hostname denylist is bypassed)
Estimated exposure
No basis for an estimate.

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

FrontMCP is a TypeScript-first framework for the Model Context Protocol (MCP). From mcp-from-openapi 2.3.0 until 2.5.0 and from frontmcp and @frontmcp/adapters 1.2.1 until 1.5.0, libs/adapters/src/openapi/openapi.adapter.ts loadOpenAPISpec() forwards untrusted OpenAPI url and spec inputs and loadOptions.refResolution to OpenAPIToolGenerator.fromURL() and OpenAPIToolGenerator.fromJSON(). The external $ref guard checks parsed hostname strings without resolving addresses, pinning validated addresses, revalidating redirect targets, or normalizing IPv4-mapped IPv6. An authenticated user who can import or configure an OpenAPI specification in a hosted or multi-user deployment can use DNS-to-loopback resolution, redirect-to-loopback behavior, or IPv4-mapped IPv6 loopback forms to cause backend-origin requests to internal services. This can expose internal administrative APIs, metadata-like services, and other private network endpoints. The practical impact is lower when only a trusted local administrator can configure OpenAPI specs, and disabling external reference protocols prevents the external $ref request. This issue is fixed in mcp-from-openapi 2.5.0 and frontmcp and @frontmcp/adapters 1.5.0.

Ecosystems
npm
Weakness
CWE-918
Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N
GHSA
GHSA-65h7-9wrw-629c (high)

In the news

No ingested article mentions this CVE yet.