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



GHSA-8Q49-2H5H-434X

GHSA-8Q49-2H5H-434X: Server-Side Request Forgery in FrontMCP OpenAPI Spec Poller

Amit Schendel
Amit Schendel
Senior Security Researcher

Jul 25, 2026·6 min read·5 visits

Executive Summary (TL;DR)

The FrontMCP background spec poller used an un-guarded global fetch() call, bypassing initial SSRF protections and allowing attackers to query internal interfaces via DNS rebinding or HTTP redirects.

A Server-Side Request Forgery (SSRF) vulnerability in FrontMCP allows unauthenticated remote attackers to query internal network services by exploiting the un-guarded background OpenAPI specification polling mechanism.

Vulnerability Overview

FrontMCP is a TypeScript-first framework designed for the Model Context Protocol (MCP). The framework provides an OpenAPI adapter that allows users to register and consume remote OpenAPI specifications dynamically. During initialization, FrontMCP exposes an external attack surface by accepting remote specification URLs from configuration inputs or network requests.

While the framework implements a hardened wrapper (OpenAPIToolGenerator.fromURL()) for initial registration, background synchronization routines operate under a different security posture. A background poller (OpenApiSpecPoller) is configured to run on a periodic timer to check for changes to the OpenAPI specification files.

This background polling mechanism was identified as vulnerable to Server-Side Request Forgery (SSRF), classified under CWE-918. An attacker who is able to supply or influence the OpenAPI specification URL can bypass initial server constraints, forcing the hosting environment to make requests to arbitrary internal resources, including local networks, loopback interfaces, or cloud metadata endpoints.

Root Cause Analysis

The root cause of this vulnerability lies in an architectural inconsistency between the initial loading mechanism and the background update routines. During application initialization, the OpenAPI adapter validates remote resources using a secure fetch implementation from the mcp-from-openapi dependency. This safe helper resolves target hostnames to their underlying IP addresses, matches them against blocklists, and enforces socket pinning to prevent DNS rebinding attacks.

Conversely, the background update routine managed by the OpenApiSpecPoller component did not reuse this validated pipeline. Instead, the doFetch() method within OpenApiSpecPoller executed queries using Node's native global fetch() client. The native client executes HTTP transactions directly via the system network library without applying filtering or security wrappers.

Because the native fetch() client does not enforce routing controls, it fails to inspect intermediate redirect targets or validate target IP addresses post-resolution. Consequently, an attacker can pass initial registration checks using a benign host and then alter the host's resolution or response profile to target internal systems during background execution.

Code Analysis

An inspection of the codebase prior to commit 077201e109bf6f45dbc85c36d6bd77ded18ab13e reveals the implementation gap in libs/adapters/src/openapi/openapi-spec-poller.ts. The un-patched version of the poller initialized HTTP requests without applying SSRF policies or carrying adapter configurations.

// Vulnerable code in openapi-spec-poller.ts
const controller = new AbortController();
const timeout = setTimeout(() => controller.abort(), this.fetchTimeoutMs);
 
try {
  const response = await fetch(this.url, {
    headers,
    signal: controller.signal,
  });
  // ...

The patch addresses this gap by importing and integrating safeFetch and normalizeSsrfOptions from the mcp-from-openapi library. The implementation now passes the ssrf options and the followRedirects configuration derived from the main adapter directly into the customized request client.

// Patched code in openapi-spec-poller.ts
const response = await safeFetch(this.url, {
  headers,
  timeoutMs: this.fetchTimeoutMs,
  followRedirects: this.followRedirects,
  ssrf: this.ssrf,
});

Additionally, openapi.adapter.ts was modified to propagate the server security policy down to the poller. The configuration parameters, including the ssrf options normalize function, are now properly populated during poller instantiation. This architectural change ensures that background validation rules align with the primary entrance verification rules.

Exploitation Methodology

An attacker can exploit this vulnerability using either an HTTP Redirect or a DNS Rebinding methodology. To initiate the attack, the adversary must register a custom, attacker-controlled URL as the OpenAPI specification source. The target URL is initially mapped to a valid, public OpenAPI document to satisfy the safe checks executed during the initial load.

In an HTTP Redirect scenario, the attacker configures the remote web server to respond to subsequent background polling cycles with an HTTP redirect status, such as a 302 Found. The Location header is set to target internal services, such as http://169.254.169.254/latest/meta-data/ on AWS environments. Because the un-patched poller follows redirects automatically, it queries the local metadata endpoint, returning the response content to the context of the poller execution context.

In a DNS Rebinding scenario, the attacker registers a domain name with a Time-To-Live (TTL) value of zero. The domain initially resolves to a public address during registration. On the next background polling interval, the host DNS record is updated to point to the local loopback address 127.0.0.1 or a private IP within the range 10.0.0.0/8. The standard fetch() call performs a fresh DNS query, resolves the domain to the internal address, and completes the request to the restricted resource.

Impact Assessment

The security impact of this vulnerability is significant, as it enables unauthenticated remote attackers to bypass network isolation boundaries. By coercing the host server to issue requests to internal networks, attackers can perform network port scanning, locate internal services, and interact with unauthenticated endpoints. This is highly critical in microservice environments where internal tools lack transport-level authentication.

In cloud environments, this flaw can lead to credential extraction from Instance Metadata Services (IMDSv1). An attacker capable of reading or influencing responses can obtain temporary IAM credentials, potentially resulting in complete compromise of the hosting cloud infrastructure.

The CVSS v3.1 score is evaluated at 8.6, with a high confidentiality impact and high availability impact due to the capability of querying arbitrary internal systems. No direct privileges are required to register adapters in insecure or exposed configurations, making the vulnerability highly operational.

Remediation and Defenses

The primary remediation strategy is to upgrade FrontMCP to version 1.5.6 or higher, which replaces vulnerable native fetch routines with the safeFetch package. Developers must verify that @frontmcp/sdk and @frontmcp/adapters are both updated in the project's dependency manifest.

When configuring the OpenAPI adapter, security administrators should ensure that allowInternalIPs remains disabled. By default, the patched version prevents requests to loopback, link-local, and RFC 1918 private network spaces. Access should only be expanded when connecting to verified internal services within isolated containerized environments.

Additionally, employing domain allowlists through the allowedHosts option is recommended to restrict outgoing specification polls to a strict list of domains. This minimizes the risk of DNS rebinding by ignoring unauthorized or dynamic DNS configurations provided by third parties.

Fix Analysis (1)

Technical Appendix

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

Affected Systems

FrontMCP@frontmcp/sdk@frontmcp/adapters

Affected Versions Detail

Product
Affected Versions
Fixed Version
@frontmcp/sdk
Agentfront
< 1.5.61.5.6
@frontmcp/adapters
Agentfront
< 1.5.61.5.6
AttributeDetail
CWE IDCWE-918
Attack VectorNetwork (AV:N)
CVSS Score8.6 (High)
Exploit StatusProof of Concept
KEV StatusNot Listed
Vulnerability ImpactServer-Side Request Forgery

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
T1105Ingress Tool Transfer
Lateral Movement
T1071.001Web Protocols
Command and Control
CWE-918
Server-Side Request Forgery (SSRF)

The web application fetches a remote resource without validating the user-supplied URL, allowing requests to be sent to arbitrary destinations, including internal infrastructure.

Vulnerability Timeline

Official fix committed by David Antoon
2026-07-23
Pull Request #510 merged into agentfront/frontmcp
2026-07-23
Stable Release @frontmcp/sdk@1.5.6 published
2026-07-23
Security Advisory published under GHSA-8Q49-2H5H-434X
2026-07-23

References & Sources

  • [1]GitHub Security Advisory GHSA-8Q49-2H5H-434X
  • [2]Official Fix Commit 077201e
  • [3]Pull Request #510
  • [4]Release v1.5.6

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

•36 minutes ago•GHSA-HMJ8-5XMH-5573
7.5

GHSA-HMJ8-5XMH-5573: Connection Denial of Service via Oversized DATA Frame in py-libp2p

A critical connection-level Denial of Service (DoS) vulnerability exists in the Yamux stream multiplexer implementation of py-libp2p (versions <= 0.6.0). The flaw allows unauthenticated or authenticated peers to permanently stall a Yamux multiplexed connection by transmitting a single malformed 12-byte header claiming an oversized payload while withholding the payload bytes.

Amit Schendel
Amit Schendel
1 views•7 min read
•about 2 hours ago•CVE-2026-16756
7.5

CVE-2026-16756: Slowloris Denial of Service via Resource Exhaustion in aws-smithy-http-server

An unauthenticated remote resource exhaustion vulnerability in Amazon aws-smithy-http-server enables denial-of-service (DoS) attacks. Affected versions do not enforce connection limits or header timeouts, allowing standard Slowloris techniques to block server operations.

Alon Barad
Alon Barad
5 views•7 min read
•about 3 hours ago•GHSA-XG4H-6GFC-H4M8
6.5

GHSA-XG4H-6GFC-H4M8: Watch API Authorization Bypass via Open-Ended Range Requests in etcd

An authorization bypass vulnerability in the gRPC Watch API of etcd allows low-privileged users to read keys outside of their authorized range. By utilizing an open-ended range request sentinel, the input is prematurely normalized before RBAC validation, misclassifying a range watch as a single-key point query.

Amit Schendel
Amit Schendel
3 views•8 min read
•about 4 hours ago•CVE-2026-16796
7.3

CVE-2026-16796: Command Argument Injection in AWS Bedrock AgentCore SDK

An argument injection vulnerability in the AWS Bedrock AgentCore Python SDK allows authenticated users to execute arbitrary commands inside the Code Interpreter sandbox container via crafted Python package specifiers containing shell metacharacters.

Alon Barad
Alon Barad
6 views•5 min read
•about 5 hours ago•GHSA-JPCW-4WR7-C3VQ
7.5

GHSA-JPCW-4WR7-C3VQ: Remote Denial of Service via NULL Pointer Dereference in kin-openapi Parameter Validation

A NULL pointer dereference vulnerability was discovered in the getkin/kin-openapi Go library. When parsing incoming request parameters that are validated against a content map with an empty media type, the openapi3filter request validation engine attempts to resolve an uninitialized schema pointer. This results in an unhandled Go runtime panic and process termination, yielding an unauthenticated, remote Denial of Service vector.

Alon Barad
Alon Barad
5 views•5 min read
•about 7 hours ago•GHSA-6VCH-Q96H-7GC3
7.5

GHSA-6VCH-Q96H-7GC3: Unbounded Goroutine Creation and Denial of Service in etcd TLS Listener

A critical Denial of Service (DoS) vulnerability exists in the etcd TLS listener. Due to the lack of a handshake timeout or deadline on incoming TLS connections within the connection acceptance loop, an unauthenticated remote attacker can spawn an unbounded number of blocking goroutines and leak file descriptors, eventually exhausting system resources and causing the etcd node to crash.

Alon Barad
Alon Barad
7 views•5 min read