CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-59973

CVE-2026-59973: High-Severity Server-Side Request Forgery in FrontMCP and mcp-from-openapi

Amit Schendel
Amit Schendel
Senior Security Researcher

Sep 15, 2026·7 min read·5 visits

Executive Summary (TL;DR)

A validation bypass in FrontMCP and mcp-from-openapi allows authenticated users to execute arbitrary Server-Side Request Forgery (SSRF) attacks against internal interfaces, bypassing existing string-based denylists through DNS wildcards, HTTP redirects, or IPv4-mapped IPv6 addresses.

CVE-2026-59973 is a high-severity Server-Side Request Forgery (SSRF) vulnerability in FrontMCP and its underlying OpenAPI parsing library, mcp-from-openapi. The flaw allows authenticated attackers capable of importing or configuring OpenAPI specifications to bypass string-based hostname filtering mechanisms. By employing DNS wildcard loopbacks, HTTP redirects, or IPv4-mapped IPv6 address formatting, attackers can coerce the application into sending HTTP requests to internal networks, loopback adapters, and cloud metadata environments.

Vulnerability Overview

FrontMCP is a TypeScript framework that exposes external tools and data resources to artificial intelligence models via the Model Context Protocol (MCP). The platform relies on OpenAPI schemas to dynamically generate client and tool interfaces. To ingest these schemas, FrontMCP implements an adapter framework that loads and parses specifications directly from external web resources or dereferences internal $ref schema definitions. The underlying parsing tasks are delegated to the library mcp-from-openapi.

The attack surface exists in any multi-user deployment where authenticated users can import or register external OpenAPI specifications. Because these specifications frequently contain schema references located on arbitrary remote hosts, the system must perform network fetches to complete the dereferencing process. An attacker can manipulate these remote requests, routing them toward restricted network resources or private endpoints.

This behavior matches the pattern of a Server-Side Request Forgery (SSRF) vulnerability, classified as CWE-918. The earlier mitigation strategy implemented a simple string-based denylist against hostnames, which failed to address fundamental network resolution realities. Consequently, an attacker can bypass the filters, triggering network operations on behalf of the FrontMCP container to probe and exploit the internal ecosystem.

Root Cause Analysis

The underlying security flaw resides in the validation design of the HTTP resolver. The logic historically evaluated the literal hostname extracted from the $ref URL before conducting any DNS lookup or network negotiation. This approach assumes that a domain name resolves exclusively to its literal string representation and ignores the standard behavior of the operating system DNS client.

Because the HTTP client resolves domain names to IP addresses directly at the socket level, several specific techniques can bypass the string filter. For example, wildcard DNS systems such as nip.io map arbitrary subdomains to designated IP addresses. If an attacker passes 127.0.0.1.nip.io, the string parser evaluates it as a public domain and permits the request, while the DNS resolution step maps the target directly to the local loopback interface.

HTTP redirects introduce a secondary bypass vector. The validator assesses the original URL, confirms that it points to an allowed public resource, and starts the HTTP request. If the target server responds with an HTTP redirect status (e.g., 302 Found) pointing to an internal resource, the client follows the redirect automatically. The internal validation routine is bypassed because the redirect occurs within the client runtime without re-triggering the resolver's boundary checks.

IPv4-mapped IPv6 representations are also a factor. Standard regex pattern matching often fails to normalize variations such as [::ffff:127.0.0.1] or hexadecimal variants like [::ffff:7f00:1]. These variants resolve directly to local interfaces while bypassing standard string filters. Additionally, the main endpoint loader fromURL lacked any validation, making the initial specification retrieval process entirely vulnerable.

Code Analysis

The following diagram illustrates the vulnerable validation flow where the security checks are decoupled from the physical connection target:

The vulnerability is addressed in the be3409cce6e97642696d4ee5a4e4e2712490b277 commit for mcp-from-openapi and the 96a78eaa5c6c4bc51cced557d83d1a03344cb03d commit for frontmcp. Below is the essential implementation of the new, secure validation loop within the updated src/ssrf.ts module:

// Secure validation resolves DNS and checks IP ranges recursively
export async function assertUrlSafe(
  url: string,
  ssrf: ResolvedSsrfOptions,
  lookup: SsrfHostLookup = defaultLookup,
): Promise<void> {
  let parsed: URL;
  try {
    parsed = new URL(url);
  } catch {
    throw new SsrfError(`Invalid spec URL: ${url}`, { url });
  }
 
  const protocol = parsed.protocol.replace(/:$/, '');
  if (protocol !== 'http' && protocol !== 'https') {
    throw new SsrfError(`Protocol "${protocol}" is not allowed`, { url });
  }
 
  const hostname = parsed.hostname;
  if (!isIpLiteral(hostname)) {
    let addresses: ResolvedAddress[];
    try {
      addresses = await lookup(hostname);
    } catch {
      return;
    }
    for (const { address } of addresses) {
      if (isBlockedAddress(address)) {
        throw new SsrfError(`Host "${hostname}" resolves to blocked address ${address}`, { url });
      }
    }
  }
}

Furthermore, the patch implements a manual redirection handler safeFetch that prevents the Node runtime from automatically resolving HTTP redirects. By using redirect: 'manual', the application can intercept the target location and run it through the same resolution validation loop:

// Manual redirect loop to enforce SSRF validation at every hop
const isRedirect = status >= 300 && status < 400 && status !== 304;
if (isRedirect && followRedirects) {
  const location = response.headers?.get?.('location');
  if (location) {
    current = new URL(location, current).toString();
    // Recalculates and validates the target on the next loop iteration
  }
}

Exploitation

Exploitation of CVE-2026-59973 requires the ability to register or update an OpenAPI adapter in FrontMCP. This action is typical for authenticated users or administrators configuring integration services. The target platform must have network connectivity to the internet to perform DNS lookups and initial fetches from the external specification sources.

An attacker begins by identifying an internal administrative endpoint or metadata service. For instance, in AWS environments, the Instance Metadata Service (IMDSv1/v2) resides at the link-local address 169.254.169.254. The attacker hosts an OpenAPI schema on a public server that includes an external $ref pointing to a wildcard DNS domain such as http://169.254.169.254.nip.io/latest/meta-data/.

When the system attempts to resolve the external schema, the hostname bypasses the string validation rules. The DNS client resolves the address to the link-local IP, forcing the server to retrieve local AWS metadata credentials. The response containing the AWS credentials is then processed as part of the schema compilation, exposing sensitive data to the attacker.

Alternatively, an attacker can use a redirect server to dynamically transition the request from a public URL to an internal port. The initial validation registers a safe public domain, but the subsequent HTTP redirect targets local loopback addresses (e.g., http://127.0.0.1:8080/admin). This exposes internal microservices that lack separate authentication layers.

Impact Assessment

The direct impact of successful exploitation is complete or partial compromise of local and internal services. Since the FrontMCP container acts as the initiator of the requests, it possesses the network privileges assigned to its hosting environment. Attackers can leverage this position to access internal APIs, administrative interfaces, and local processes.

The CVSS v3.1 score is evaluated at 8.5 (High), with a vector of CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N. The scope change parameter (S:C) is critical, reflecting that the vulnerability allows the attacker to transition from the application layer of FrontMCP to the underlying network infrastructure. Confidentiality impact is high because arbitrary internal data can be read, while integrity is rated low as arbitrary write operations can sometimes be executed on target endpoints.

In cloud-native environments, the impact is elevated due to the presence of metadata endpoints (IMDS). Gaining access to AWS, GCP, or Azure metadata can result in the leak of temporary IAM credentials, leading to broader lateral movement across the cloud infrastructure.

Remediation

The primary remediation action is upgrading FrontMCP to version 1.5.0 or higher, which forces mcp-from-openapi to version 2.5.0 or higher. These updates contain the secure-by-default configuration and DNS-resolved filtering capabilities. Administrators must verify their dependency lockfiles to ensure that vulnerable versions of mcp-from-openapi are not cached.

If immediate patching is not possible, several mitigations can protect the system. First, disable external $ref resolution entirely. This can be configured by passing an empty array to allowedProtocols in the OpenAPI adapter options. This stops the server from establishing any outgoing connections during the schema parsing process.

// Workaround: Block all external schema loading
OpenapiAdapter.init({
  name: 'secured-api',
  url: 'https://api.externalpartner.com/openapi.json',
  loadOptions: {
    followRedirects: false,
    refResolution: {
      allowedProtocols: []
    }
  }
});

Second, configure network-level egress controls (firewalls or security groups) to block the FrontMCP runtime from communicating with internal subnets, RFC 1918 address space, loopback interfaces, or cloud metadata endpoints. This network isolation acts as a defense-in-depth barrier against any residual TOCTOU exploits.

Official Patches

agentfront/frontmcpFrontMCP GitHub Advisory detailing the vulnerability and release of version 1.5.0.
agentfront/frontmcpPull Request detailing secure defaults and dependency updates in FrontMCP.
agentfront/mcp-from-openapiPull Request containing the dynamic DNS validation module implementation.

Fix Analysis (2)

Technical Appendix

CVSS Score
8.5/ 10
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N

Affected Systems

FrontMCP hosted tool generation servicesInternal networks connected to FrontMCP containersCloud hosting platform metadata environments (IMDSv1/v2)

Affected Versions Detail

Product
Affected Versions
Fixed Version
frontmcp
agentfront
>= 1.2.1 < 1.5.01.5.0
@frontmcp/adapters
agentfront
>= 1.2.1 < 1.5.01.5.0
mcp-from-openapi
agentfront
>= 2.3.0 < 2.5.02.5.0
AttributeDetail
CWE IDCWE-918
Attack VectorNetwork (AV:N)
CVSS Score8.5
Exploit Statuspoc
KEV StatusNot Listed
Impact TypeServer-Side Request Forgery

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
T1005Data from Local System
Collection
T1046Network Service Discovery
Discovery
CWE-918
Server-Side Request Forgery (SSRF)

The web application server receives an arbitrary URL from an upstream user-supplied specification and requests resources without performing adequate validation of DNS resolutions or intermediate redirection hooks.

Known Exploits & Detection

Wiz Vulnerability Research DatabaseValidation testing confirming successful bypasses on mcp-from-openapi 2.3.0 using loopback canary tests with wildcards, redirects, and IPv4-mapped IPv6 formats.

Vulnerability Timeline

Audit findings identify SSRF bypasses via DNS wildcarding and HTTP redirect loops in mcp-from-openapi 2.3.0.
2026-05-25
mcp-from-openapi version 2.5.0 released with dynamic DNS-level safety validation checks.
2026-06-21
frontmcp version 1.5.0 released locking secure dependencies and adapter fetch policies.
2026-06-22
Public advisory disclosure issued under CVE-2026-59973 and GHSA-65h7-9wrw-629c.
2026-09-15

References & Sources

  • [1]FrontMCP Security Advisory
  • [2]FrontMCP Release Version 1.5.0
  • [3]mcp-from-openapi Release Version 2.5.0

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 7 hours ago•CVE-2026-3888
7.8

CVE-2026-3888: Local Privilege Escalation in snapd via systemd-tmpfiles

CVE-2026-3888 is a critical local privilege escalation vulnerability arising from the insecure interaction between Canonical's snap-confine helper binary and systemd-tmpfiles within the world-writable /tmp directory.

Alon Barad
Alon Barad
9 views•6 min read
•about 17 hours ago•CVE-2026-46696
3.3

CVE-2026-46696: Safe Mode Sandbox Bypass in October CMS via Session Store and Forwarded Builder Calls

CVE-2026-46696 identifies a critical sandbox bypass vulnerability in the October CMS platform that affects the Twig template security policy when safe mode is enabled. An authenticated backend user with permissions to modify CMS markup templates can chain unrestricted session store method access with Eloquent database query forwarding omissions. This chain allows the attacker to execute arbitrary raw SQL queries to read system secrets and subsequently write those secrets directly to the active session payload, achieving unauthorized administrative privilege escalation.

Alon Barad
Alon Barad
8 views•8 min read
•about 18 hours ago•CVE-2026-49400
3.3

CVE-2026-49400: PHP Object Injection Sandbox Escape in October CMS SessionMaker

A security vulnerability in October Content Management System (CMS) involves the deserialization of untrusted data (CWE-502) within the backend SessionMaker trait. Prior to the patched versions, October CMS stored widget session states as base64-encoded serialized PHP objects. When loading these states, the application consumed them using unserialize() without enforcing class restrictions (allowed_classes). In configurations where cms.safe_mode is enabled to sandbox users with markup editor privileges, an attacker can exploit this behavior to instantiate arbitrary PHP classes and execute arbitrary code via accessible gadget chains.

Amit Schendel
Amit Schendel
9 views•6 min read
•about 19 hours ago•CVE-2026-56668
8.1

CVE-2026-56668: Privilege Escalation and Cross-Client Audience Bypass in ZITADEL OAuth2 Token Exchange

A security vulnerability in ZITADEL's backend implementation of the OAuth2 Token Exchange endpoint allows authenticated clients to perform scope escalation and cross-client audience bypass. Prior to version 4.15.3, the Token Exchange flow lacked crucial validation logic, enabling low-privilege tokens to be exchanged for high-privilege tokens or tokens valid within other client applications, violating the OAuth2 delegation model.

Alon Barad
Alon Barad
7 views•7 min read
•about 20 hours ago•CVE-2026-76081
5.5

CVE-2026-76081: Improper Role Revocation in ZITADEL Dynamic Project Grants

CVE-2026-76081 is a logical vulnerability in ZITADEL's role cascading logic where updating a Project Grant to drop multiple adjacent roles simultaneously fails to clean up associated User Grants due to an in-place slice mutation error in Go.

Amit Schendel
Amit Schendel
11 views•6 min read
•about 21 hours ago•GHSA-2XMM-M4WV-3FJH
3.9

GHSA-2XMM-M4WV-3FJH: Incomplete Scheme Validation in October CMS Image Resizer

This report provides a technical analysis of GHSA-2XMM-M4WV-3FJH, an incomplete scheme validation vulnerability in the image resizing utility of October CMS. By exploiting this flaw, authenticated or privileged users can pass dangerous URI schemes to trigger deserialization of untrusted metadata.

Alon Barad
Alon Barad
4 views•5 min read