@fastify/reply-from: Unintended Proxy or Intermediary
CVE-2026-16158 is a critical-severity unintended proxy or intermediary vulnerability in @fastify/reply-from, with a CVSS 3.1 base score of 10.0 out of 10. It can be exploited remotely over the network by an unauthenticated attacker, without any action from a user. The record lists version 12.6.4 as the first without the flaw, so updating @fastify/reply-from to that release or later removes the exposure. There is no confirmed exploitation so far. EPSS estimates a 0.38% chance of exploitation within 30 days, which is low compared with other CVEs.
Critical severity: a successful attack would have severe impact.
What to do
- Update @fastify/reply-from to 12.6.4 or a later version.
- Read the advisory on cna.openjsf.org for workarounds and exact fixed builds.
- Until you can update, restrict network access to the affected service so it is not reachable from untrusted networks.
Affected products and versions
| Vendor | Product | Affected versions | Fixed in |
|---|---|---|---|
| @fastify/reply-from | @fastify/reply-from | 8.3.1 up to, but not including, 12.6.4 | 12.6.4 |
Version data comes from the organisation that assigned the CVE. Confirm against the vendor advisory before deciding you are unaffected.
How the severity score breaks down
- Attack vector
- NetworkCan be exploited remotely over a network, including the internet.
- Attack complexity
- LowNo special conditions are needed; the attack works reliably.
- Privileges required
- NoneNo account or login is needed.
- User interaction
- NoneNo action by a victim is required.
- Scope
- ChangedThe attack can reach beyond the vulnerable component into other systems.
- Confidentiality
- HighAll data handled by the component can be read.
- Integrity
- HighData or code can be modified at will.
- Availability
- NoneAvailability is not affected.
Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N. Scored by NVD.
| Scoring system | Score | Severity | Scored by |
|---|---|---|---|
| CVSS 3.1 | 8.7 | High | CNA |
| CVSS 3.1 | 10.0 | Critical | NVD |
Official description
Impact: @fastify/reply-from versions from 8.3.1 up to but not including 12.6.4 build the internal URL cache key by concatenating the destination and source path without a delimiter. Different destination and source pairs can therefore produce the same key while resolving to different upstream URLs. When getUpstream selects an upstream from request data, a URL cached for one upstream can be reused for a request intended for another upstream, causing cross-upstream data access and modification. The default configuration is affected. Setting disableCache to true prevents the behavior. Patches: upgrade to @fastify/reply-from 12.6.4. Workarounds: pass disableCache: true when registering the plugin.
Source: the CVE record as published by its numbering authority, via NVD and CVE.org.
The underlying weakness: Unintended Proxy or Intermediary
The product receives a request, message, or directive from an upstream component, but the product does not sufficiently preserve the original source of the request before forwarding the request to an external actor that is outside of the product's control sphere.
How developers prevent this class of flaw
- Enforce the use of strong mutual authentication mechanism between the two parties.
- Whenever a product is an intermediary or proxy for transactions between two other components, the proxy core should not drop the identity of the initiator of the transaction. The immutability of the identity of the initiator must be maintained and should be forwarded all the way to the target.
More Unintended Proxy or Intermediary vulnerabilities (CWE-441)
Timeline
- CVE record published.
- CISA published its SSVC assessment (exploitation: none, automatable: no, technical impact: total).
- Record last changed materially (score, affected products, status or references).
References
Advisories
Other vulnerabilities in @fastify/reply-from
- 8.2 High severity
- 7.4 High severity
- 8.6 High severity
Recent Unintended Proxy or Intermediary vulnerabilities
- 8.7 High severity
- 7.7 High severity
- 7.8 High severity
- 7.8 High severity
- 8.3 High severity
- 10.0 Critical severity
Spotted an error? Tell us.