Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessControl spec host or open redirect
-
ExploitVictim loads spec via fromURL with credential headers
-
ExecutionsafeFetch forwards headers on cross-origin redirect
-
ImpactAttacker captures bearer token or cookie
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V6 - Authentication Credential protection in transit/storage
|
| Exploitation Conditions | Exploitation requires the caller to pass credential headers (Authorization and/or Cookie) to fromURL(); followRedirects defaults to true in the affected code. The attacker must control the spec host or abuse an open redirect on it so that the spec request is redirected to an attacker-controlled origin, at which point the manual redirect loop in safeFetch() re-sends the caller's headers unchanged. Limiting factors: if no credential headers are supplied to fromURL(), or if followRedirects is set to false, no credentials leak; the impact is bounded to the single token/cookie the caller provided (higher only if that token is high-privilege). The bundled CWE-183 blockedHosts trailing-dot bypass additionally requires an operator who relies on blockedHosts. The fix in 2.9.0 drops all caller headers on any cross-origin hop (and on https→http downgrade), which is the vendor-stated complete remedy alongside loading the final URL directly or setting followRedirects:false. |
| Impact | This is a medium-severity, confidentiality-only credential-leak flaw (CWE-522) rated CVSS 4.0 6.3 by the vendor (AV:N/AC:L/AT:P/PR:N/UI:N/VC:L only). The vector's AT:P correctly signals that exploitation is not unconditional: it depends on a specific attack requirement - the caller must have supplied credential headers to fromURL() and the attacker must control the spec host or abuse an open redirect on it. No EPSS score was provided and the CVE is NOT in CISA KEV, so there is no signal of active or widespread exploitation. The vuln.today decision label is 'this_month' (not act_now/emergency), consistent with a real-but-not-urgent issue. The reporting researcher (VulnCheck) independently scored the core issue CVSS 3.1 3.7 (AC:H), emphasizing the precondition that the caller must pass headers - this aligns with the vendor's AT:P. Net: a genuine credential-exposure bug worth patching this month, but the real-world risk is moderated by the dual precondition (caller passes headers AND attacker controls/redirects the spec origin) and the impact ceiling of a single low-privilege token/cookie unless high-privilege tokens are in use. No conflicting severity signals; the main uncertainty is exploitation likelihood, as no EPSS/KEV data is available. |
| Exploit ScenarioDerived | An attacker who controls the spec host (or finds an open redirect on it) configures it to redirect the legitimate spec URL to an attacker-owned origin. When a developer or service loads that private spec via fromURL() with an Authorization bearer token or Cookie header, safeFetch() follows the cross-origin redirect and re-sends those headers to the attacker's origin, leaking the credential. The reporter (VulnCheck) demonstrated the token reaching the second origin with a private PoC confirmed by execution; no public exploit code is published, and reproduction detail appears only in the vendor advisory and fix tests. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 23, 2026
Credential exposure in the npm package mcp-from-openapi (versions 2.5.0 up to but not including 2.9.0) lets a malicious or compromised spec host harvest the caller's Authorization, Cookie and Proxy-Authorization headers, because the library's manual redirect loop in safeFetch() re-sends those headers unchanged to every hop - including hops that leave the spec URL's origin, which native fetch would strip. An attacker who controls the host serving the OpenAPI document, or who can exploit an open redirect on that host, receives the bearer token or cookie that the caller supplied to fromURL(); impact is confidentiality-only and bounded to the single credential handed over (higher only when that token is high-privilege), and no leak occurs when no credential headers are passed or when followRedirects is disabled. The same advisory bundles a lower-severity blockedHosts denylist bypass (a trailing root dot, e.g. http://internal.corp./, fails the exact-string comparison), relevant only to deployments that rely on blockedHosts with allowInternalIPs enabled. A vendor fix is available in 2.9.0; no public exploit code was identified at time of analysis, though the upstream advisory documents reproduction steps, and the vendor rates the issue CVSS 4.0 6.3 while our independent assessment scores it CVSS 3.1 5.9-class AV:N/AC:H with low confidentiality impact only.
RemediationAI
Vendor-released patch: mcp-from-openapi 2.9.0 (https://github.com/agentfront/mcp-from-openapi/releases/tag/v2.9.0, fixed by PR https://github.com/agentfront/mcp-from-openapi/pull/42, commit 47fb7a655de33958b0c923490ab244343eb5fc44). Upgrading is the vendor-stated complete remedy: 2.9.0 drops all caller headers on any hop that leaves the spec URL's origin - including port changes and an https-to-http downgrade - and keeps them dropped for later hops even if the chain returns to the original origin, and it normalizes allowedHosts/blockedHosts matching (case-insensitive, trailing root dots and IPv6 brackets ignored) so the trailing-dot bypass no longer works; external $ref fetches still never receive caller headers. Until the upgrade lands, the documented alternatives are to pass followRedirects: false to fromURL(), which stops the chain at the redirect and therefore breaks any legitimate redirect the spec host relies on (the spec load will fail unless the final URL is fetched directly), or to resolve the redirect ourselves and load the final URL directly, which requires knowing and pinning the destination host but restores normal fetching. Not passing reusable high-value Authorization or Cookie headers to fromURL() removes the exposure entirely, at the cost of losing authenticated access to private spec documents. Relying on blockedHosts alone is not a safe substitute on 2.5.0-2.8.0, since an attacker-supplied 'host.' form bypasses the exact-string match whenever allowInternalIPs is true. Patch availability and priority follow the vendor advisory; this is a this-month, medium-severity, confidentiality-only issue, not an emergency.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The flaw class is CWE-522 (insufficiently protected credentials), with the bundled denylist gap additionally mapped to CWE-183 (permissive allowlist). The package loads remote OpenAPI documents via OpenAPIToolGenerator.fromURL(), which sets followRedirects to true by default, and implements redirect following manually rather than relying on the platform fetch. In the affected ESM build (esm/index.mjs, roughly lines 3042-3066) and the equivalent CJS build (index.js, roughly lines 3130-3155), safeFetch() resolves each hop with current = new URL(location, current) and then calls transport(current, {headers, ...}), passing the caller's header object through with no same-origin comparison. The Fetch standard strips Authorization on cross-origin redirects; this hand-rolled loop does not, and the library's own $ref reader deliberately omits caller headers for exactly this reason, making the spec-fetch path the inconsistent one. Exploitation is attacker-dependent: the caller must supply credential headers to fromURL() and the attacker must control the spec host or abuse an open redirect on it, which is why the vendor's CVSS 4.0 vector carries AT:P while the 3.1 assessment uses AC:H. The secondary issue is hostname canonicalization: blockedHosts.includes(hostname) compares raw strings from new URL(), and the WHATWG URL parser preserves the trailing root dot, so a denylist entry for 'b.test' never matches 'b.test.', and with allowInternalIPs: true the denylist is the only host guard. The 2.9.0 fix normalizes hostnames (lowercase, trailing dots and IPv6 brackets removed) on both sides of the allowedHosts/blockedHosts comparison and extends the IP classifier to decode IPv4-mapped, IPv4-translated, IPv4-compatible, NAT64 (64:ff9b::/96 and 64:ff9b:1::/48) and 6to4 (2002::/16) forms against the IPv4 ranges.
Know when Open Redirect gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N
Leak needs the caller to supply headers and the attacker to control the spec host or an open redirect, so AC:H; only low-confidentiality token/cookie disclosure, no integrity or availability impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
mcp-from-openapi from 2.5.0 before 2.9.0 contains a credential exposure vulnerability that allows attackers to capture Authorization and Cookie headers because safeFetch() forwards them on cross-origin redirects. Attackers controlling a spec host or abusing an open redirect can redirect fromURL() spec requests to their own origin to steal bearer tokens or cookies.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
More in Open Redirect
View allA malicious third-party can give a crafted "ssh://..." URL to an unsuspecting victim, and an attempt to visit the URL ca
GFI Kerio Control versions 9.2.5 through 9.4.5 contain an HTTP response splitting vulnerability in the dest parameter of
PHP through 7.0.8 does not attempt to address RFC 3875 section 4.1.18 namespace conflicts and therefore does not protect
Multiple open redirect vulnerabilities in Apache Struts 2.0.0 through 2.3.15 allow remote attackers to redirect users to
When the default servlet in Apache Tomcat versions 9.0.0.M1 to 9.0.11, 8.5.0 to 8.5.33 and 7.0.23 to 7.0.90 returned a r
Open redirect vulnerability in age-verification.php in the Age Verification plugin 0.4 and earlier for WordPress allows
Open redirect vulnerability in Kaseya Virtual System Administrator (VSA) 7.x before 7.0.0.29, 8.x before 8.0.0.18, 9.0 b
Vulnerability in the Oracle Applications Framework component of Oracle E-Business Suite (subcomponent: Popup windows (li
Unspecified vulnerability in the Oracle Application Server Single Sign-On component in Oracle Fusion Middleware 10.1.4.3
Flarum is open source discussion platform software. Rated medium severity (CVSS 6.5), this vulnerability is remotely exp
Open redirect vulnerability in Novius OS 5.0.1 (Elche) allows remote attackers to redirect users to arbitrary web sites
Open redirect vulnerability in the Redirect function in stageshow_redirect.php in the StageShow plugin before 5.0.9 for
EUVD-2026-108958
GHSA-3gr3-m4x5-3fpp
NVD
CVE.org
EPSS
Exploit-DB