FrontMCP OpenAPI adapter SSRF in spec-change poller

Severity: low · CVSS 3.1 · Published 2026-07-24

FrontMCP is a Node.js framework that exposes APIs as AI tools. Its OpenAPI adapter periodically re-fetches OpenAPI specifications to detect updates, but the polling mechanism bypassed security checks that prevent Server-Side Request Forgery (SSRF) attacks. An attacker who controls or influences a spec URL can cause the server to make unguarded HTTP requests to internal cloud metadata services, internal networks, or private IP addresses—potentially stealing credentials or discovering internal systems.

Technologies: @frontmcp/adapters (npm). Vendors: npm.

Quick answers

Is This vulnerability exploited in the wild?
No. Junglewise Threat Intelligence has no report of This vulnerability being exploited in the wild.
How severe is This vulnerability?
Low severity, with a CVSS score of 3.1, published 24 July 2026.
Which products and versions are affected?
@frontmcp/adapters (npm) SEMVER:introduced=0,fixed=1.5.6.
Is there a fix for This vulnerability?
Yes. @frontmcp/adapters (npm): upgrade to 1.5.6 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is This vulnerability attacked?
It is attacked over the network.
Am I affected?
Check whether you run @frontmcp/adapters (npm) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • @frontmcp/adapters (npm): upgrade to 1.5.6 or later
    npm install @frontmcp/adapters@1.5.6

Technical details

FrontMCP's OpenAPI adapter uses a spec-change poller (OpenApiSpecPoller) that re-fetches a configured OpenAPI spec URL on a timer using a raw global fetch() call. This bypass the safeFetch() / assertUrlSafe() SSRF guard that protects the initial spec load via OpenAPIToolGenerator.fromURL(). The vulnerable code path lacks all protections: no IP blocklist enforcement, no internal/cloud-metadata/CGNAT blocking, no DNS pinning, and no per-hop redirect validation. An attacker-influenceable spec URL (user-supplied, tenant-supplied, or redirected by an attacker) can point to internal addresses like 169.254.169.254 (AWS metadata endpoint) or 127.0.0.1. Each polling interval issues an unguarded GET request, enabling credential theft and network reconnaissance. Patch 1.5.6 and later route polling through the same safeFetch guard as the initial load.

Affected products

  • FrontMCP adapters <=1.5.5

Timeline

  • 2026-07-24: disclosed

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.