Severity by source
AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N
Remote unauthenticated encoding trick (AV:N/AC:L/PR:N/UI:N) bypasses the proxy to a separate upstream (S:C); confidentiality High via exposed endpoints, integrity only Low since state change depends on which upstream endpoints are reachable.
Primary rating from Vendor (openjs).
CVSS VectorVendor: openjs
Lifecycle Timeline
3DescriptionCVE.org
Impact: @fastify/http-proxy versions up to and including 11.5.0 fail to rewrite the request prefix when the prefix segment is URL-encoded. Fastify's router URL-decodes paths for route matching, but request.url retains the original encoded form, and the prefix-rewrite step uses a literal string replace against the decoded prefix. A request that encodes one or more characters of the configured prefix therefore matches the route but skips the rewrite, so the raw encoded path is forwarded to the upstream unchanged. The upstream then decodes the path and serves it, letting an attacker reach upstream paths that the proxy was configured to hide via rewritePrefix, including internal or administrative endpoints.
Patches: upgrade to @fastify/http-proxy 11.6.0.
Workarounds: none.
AnalysisAI
Proxy prefix-rewrite bypass in @fastify/http-proxy (versions up to and including 11.5.0) lets remote unauthenticated attackers reach upstream endpoints the proxy was configured to hide. Because Fastify's router URL-decodes paths for route matching while the rewrite step performs a literal string replace against the decoded prefix, a request that URL-encodes any character of the configured prefix still matches the route but skips the rewrite, forwarding the raw encoded path to the upstream, which decodes and serves it. There is no public exploit identified at time of analysis, but the CVSS 3.1 base score is 10.0 (scope-changed) and the OpenJS/GHSA advisory characterizes it as an information-disclosure access-control bypass.
Technical ContextAI
The affected component is @fastify/http-proxy, a Fastify plugin that reverse-proxies incoming requests to an upstream, typically using the prefix/rewritePrefix options to expose an internal service under a public path while stripping or rewriting that path segment before forwarding. The root cause is CWE-20 (Improper Input Validation): two different representations of the request path are used inconsistently. Fastify's router normalizes and URL-decodes the incoming path for route matching, so an encoded prefix such as /admi%6e still matches the configured route, but request.url retains the original percent-encoded form. The plugin's prefix-rewrite logic uses a plain literal string replacement against the decoded prefix value; when the incoming URL is encoded it does not textually match, the replacement silently no-ops, and the untouched encoded path is forwarded upstream. The upstream server then performs its own URL-decoding and serves the fully-decoded path, defeating the segment-hiding that rewritePrefix was intended to enforce. The CPE cpe:2.3:a:@fastify/http-proxy:@fastify/http-proxy:*:*:* identifies the plugin itself as the affected product across all versions prior to the fix.
RemediationAI
Vendor-released patch: upgrade @fastify/http-proxy to 11.6.0 or later, which corrects the prefix-rewrite logic so encoded prefixes are handled consistently; this is the primary and recommended fix. The advisory states there are no official workarounds, so if immediate upgrade is impossible, apply compensating controls with awareness of their trade-offs: place a normalizing reverse proxy or WAF in front of the Fastify service that URL-decodes and canonicalizes the path before it reaches the plugin, or reject requests whose path contains percent-encoded characters in the prefix segment (this can break legitimate clients that legitimately encode reserved characters); alternatively, stop relying on rewritePrefix as a security boundary and enforce authentication and authorization directly on the upstream's internal and administrative endpoints so that reaching them via a bypassed path still fails (most robust but requires upstream changes). Track fixes via https://github.com/fastify/fastify-http-proxy/security/advisories/GHSA-mx7v-qhg9-2mvv.
More in Fastify Http Proxy
View allWe are tasked with synthesizing data from multiple sources about CVE-2026-15631 into a comprehensive JSON analysis. The
fastify-http-proxy is an npm package which is a fastify plugin for proxying your http requests to another server, with h
HTTP header smuggling in @fastify/reply-from ≤12.6.1 and @fastify/http-proxy ≤11.4.3 allows remote unauthenticated attac
Path traversal in @fastify/http-proxy before 11.6.2 permits unauthenticated remote attackers to bypass the prefix and re
Same weakness CWE-20 – Improper Input Validation
View allSame technique Information Disclosure
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-45379