Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSend request with backslash dot-segments
-
DeliveryBypass forward-slash-only traversal check
-
ExploitURL parser normalizes backslash to slash
-
ExecutionEscape intended upstream prefix
-
ImpactRead unintended upstream endpoints
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK
2 techniques across 2 tactics: Discovery, Collection The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires the consuming application to pass untrusted input into the proxied path AND rely on prefix scoping or Fastify route guards to constrain it - the advisory names the exact vulnerable pattern reply.from('/v1/public/' + req.params['*']). The attacker supplies backslash dot-segments (raw \..\ or percent-encoded %5c..%5c) in the user-controlled segment; this only works on the http, https, ws, and wss schemes where the WHATWG URL parser normalizes backslash to forward slash. Limiting factors: applications that do not concatenate untrusted input into the forward path, or that enforce upstream authorization independently of the proxy prefix, are not exploitable despite running an affected version. Exploitation is unauthenticated (PR:N) against the vulnerable usage pattern; there is no workaround other than upgrading to 12.8.1. |
| Impact | This is a genuine but conditional priority, not a blanket critical. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N) describes a network-reachable, low-complexity, unauthenticated flaw, which drives the 8.2 base score, with impact weighted toward confidentiality (C:H) and only limited integrity (I:L) and no availability impact - consistent with a path-traversal/prefix-escape that exposes unintended upstream resources rather than enabling code execution. The vuln.today decision label is 'this_week' rather than act_now/emergency, which aligns with the absence of CISA KEV listing and the lack of any confirmed public exploit code. No EPSS score was supplied in the input, so probabilistic exploitation likelihood cannot be quantified here. The most important caveat is that the high score assumes a vulnerable usage pattern: the real-world risk depends entirely on whether the consuming application concatenates untrusted input into the forwarded path and relies on prefix scoping or route guards (see exploitation_conditions). Applications using @fastify/reply-from without user-controlled path segments are not meaningfully exposed despite the high base score. |
| Exploit ScenarioDerived | An application proxies only a public subtree to an upstream using a scoped call such as reply.from('/v1/public/' + req.params['*']). An unauthenticated attacker sends a request whose wildcard segment contains backslash dot-segments (raw \..\ or percent-encoded %5c..%5c); the plugin's forward-slash-only traversal check passes, the WHATWG URL parser normalizes the backslashes to forward slashes, and the request escapes the /v1/public/ prefix to reach other upstream endpoints. No public exploit code is identified at time of analysis, though the mechanism is fully described in the GHSA advisory. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Nov 02, 2026
Unauthenticated path traversal in the Fastify plugin @fastify/reply-from (all releases up to and including 12.8.0) lets a crafted request escape a configured upstream prefix and reach other upstream endpoints. The plugin's buildURL() checked proxy paths only for forward-slash dot-segments, but the WHATWG URL parser it then used collapses backslashes and %5c into forward slashes on http, https, ws and wss, so a path containing \..\ or %5c..%5c passes the check and resolves to a different upstream path - an unauthenticated request (PR:N) can therefore slip past prefix scoping or Fastify route guards placed in front of reply.from(). Impact is primarily confidentiality (C:H) with limited integrity effect (I:L); no public exploit identified at time of analysis, and exploitation is conditional on the consuming application concatenating untrusted input into the forwarded path.
RemediationAI
Vendor-released patch: @fastify/reply-from 12.8.1 - upgrade to 12.8.1 or later, where buildURL() normalizes backslashes and rejects any path whose segments resolve to a single or double dot, along with control characters and ambiguous whitespace, before the URL is constructed. The upstream advisory states there is no workaround other than upgrading, so no configuration-level fix is offered for affected versions. In practice, exposure is limited to services that build the forward path from user-controlled input (for example reply.from('/v1/public/' + req.params['*'])) or that depend on Fastify route guards in front of reply.from(); applications that do not concatenate untrusted input into the forwarded path, or that enforce authorization at the upstream independently of the proxy prefix, are not exploitable despite running an affected version, but upgrading remains the complete fix. Details and the fixed version are documented at https://github.com/fastify/fastify-reply-from/security/advisories/GHSA-vp2r-3vgv-32g9.
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 is CWE-22 (improper limitation of a pathname to a restricted directory) arising from a mismatch between two path-handling layers. @fastify/reply-from's buildURL() performed its traversal check using forward-slash dot-segment semantics only, then handed the composed target to the WHATWG URL parser for resolution. On the special schemes http, https, ws and wss that parser normalizes both a raw backslash and its percent-encoded form %5c to a forward slash, so a segment such as \..\ or %5c..%5c is not recognized as a dot-segment by the check but is treated as one after parsing - the traversal escapes whatever prefix the application prepended. The vulnerable usage pattern named in the advisory is a concatenated path such as reply.from('/v1/public/' + req.params['*']), or any design that relies on Fastify route guards running before reply.from() rather than on authorization enforced at the upstream. Per the CPE record, the affected component is @fastify/reply-from across versions below 12.8.1. The trigger conditions are as stated in the advisory; no additional mechanism should be inferred beyond the backslash/percent-encoded normalization and prefix-escape behaviour it describes.
Know when Fastify Reply From 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
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N
Remote unauthenticated request with no user interaction (AV:N/AC:L/PR:N/UI:N); confidentiality-dominant upstream exposure (C:H) with limited integrity reach (I:L) and no availability impact.
Primary rating from Vendor (openjs).
CVSS VectorVendor: openjs
Lifecycle Timeline
2DescriptionCVE.org
@fastify/reply-from is a Fastify plugin that forwards requests to an upstream HTTP server. In versions up to and including 12.8.0, the plugin validated proxy paths against forward-slash dot-segments only and then built the target with the WHATWG URL parser, which normalizes a backslash and its percent-encoded form to a forward slash on the http, https, ws, and wss schemes. A path that uses backslash dot-segments therefore bypasses the traversal check and resolves to a different upstream path, so an application that scopes proxying to an upstream prefix, or relies on route guards in front of the forwarding call, can have an unauthenticated request escape the intended prefix and reach other upstream endpoints. The resulting access to unintended upstream resources is primarily a confidentiality impact with limited integrity impact. The issue is fixed in @fastify/reply-from 12.8.1, where the path is normalized and any segment resolving to a single or double dot, along with control characters and ambiguous whitespace, is rejected before the URL is constructed, and users should upgrade to 12.8.1 or later. There is no workaround other than upgrading.
Technical POC Analysis
CWE-22 (Improper Limitation of a Pathname to a Restricted Directory / Path Traversal), localized to buildURL() in @fastify/reply-from.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
CVE-2026-117518 is a high-severity path traversal flaw in the widely used Fastify plugin @fastify/reply-from that allows unauthenticated attackers to bypass upstream prefix scoping and reach unintended backend endpoints. Applications that concatenate untrusted user input into proxied paths are exposed, potentially leaking sensitive data and undermining access controls. Leadership should prioritize remediation because this affects a core component of many API gateways and could lead to confidentiality breaches.
No vendor-released patch identified at time of analysis. Interim mitigations include strict validation of user-supplied paths to reject backslashes and encoded characters, avoid concatenating untrusted input into proxy paths, and implement additional authorization checks on upstream endpoints.
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
Attack Technique
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
More in Fastify Reply From
View allCross-upstream data exposure in the @fastify/reply-from proxy plugin (versions 8.3.1 through 12.6.3) lets remote unauthe
fastify-reply-from is an npm package which is a fastify plugin to forward the current http request to another server. Ra
HTTP header smuggling in @fastify/reply-from ≤12.6.1 and @fastify/http-proxy ≤11.4.3 allows remote unauthenticated attac
TLS certificate verification bypass in @fastify/reply-from versions prior to 12.7.0 allows an on-path attacker to impers
EUVD-2026-115127
NVD
CVE.org
GitHub
VulDB
Exploit-DB