CVE-2025-48865
published 2025-05-30CVE-2025-48865: Fabio is an HTTP(S) and TCP router for deploying applications managed by consul. Prior to version 1.6.6, Fabio allows clients to remove X-Forwarded headers…
PriorityP351critical9.1CVSS 3.1
AVNACLPRNUINSUCHIHAN
EPSS
0.45%
38.9th percentile
Fabio is an HTTP(S) and TCP router for deploying applications managed by consul. Prior to version 1.6.6, Fabio allows clients to remove X-Forwarded headers (except X-Forwarded-For) due to a vulnerability in how it processes hop-by-hop headers. Fabio adds HTTP headers like X-Forwarded-Host and X-Forwarded-Port when routing requests to backend applications. Since the receiving application should trust these headers, allowing HTTP clients to remove or modify them creates potential security vulnerabilities. Some of these custom headers can be removed and, in certain cases, manipulated. The attack relies on the behavior that headers can be defined as hop-by-hop via the HTTP Connection header. This issue has been patched in version 1.6.6.
Affected
4 ranges
| Vendor | Product | Version range | Fixed in |
|---|---|---|---|
| fabiolb | fabio | < 1.6.6 | 1.6.6 |
| fabiolb | fabio | — | — |
| github.com | fabiolb_fabio | >= 0 < 1.6.6 | 1.6.6 |
| github.com | fabiolb_fabio | >= 1.6.6 < 1.7.2 | 1.7.2 |
CVSS provenance
nvdv3.19.1CRITICALCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
ghsa9.8CRITICAL
osv9.8CRITICAL
Stop checking back — get the weekly exploitation signal.
Every Monday: what got weaponized or added to CISA KEV in the last seven days — each CVE cross-linked to its PoC, Nuclei template, and detection rule. Free, one email a week, unsubscribe in one click.
GHSA
Fabio - Incomplete fix for CVE-2025-48865: operator-configured trust headers (clientip/tls/requestid) still strippable via the Connection header
ghsa·2026-09-22·CVSS 9.1
CVE-2026-62987 [CRITICAL] CWE-290 Fabio - Incomplete fix for CVE-2025-48865: operator-configured trust headers (clientip/tls/requestid) still strippable via the Connection header
Fabio - Incomplete fix for CVE-2025-48865: operator-configured trust headers (clientip/tls/requestid) still strippable via the Connection header
**Affected:** github.com/fabiolb/fabio >= 1.6.6 through 1.7.1 and master HEAD (c75f8a6).
### Summary
The v1.6.6 fix for CVE-2025-48865 sweeps the client `Connection` header against a hardcoded allowlist `protectHeaders` (proxy/http_headers.go:28-36) containing only the 7 X-Forwarded family headers. Fabio also injects three *operator-configured* server-side trust headers that are NOT in that allowlist, so the original hop-by-hop stripping attack still works against them.
### Details
The three unprotected trust headers and where fabio sets them:
- ClientIPHeader (`proxy.header.clientip`) - http_headers.go:73 `r.Header.Set(cfg.ClientIPHeader, remo
OSV
Fabio allows HTTP clients to manipulate custom headers it adds in github.com/fabiolb/fabio
osv·2025-06-03
CVE-2025-48865 Fabio allows HTTP clients to manipulate custom headers it adds in github.com/fabiolb/fabio
Fabio allows HTTP clients to manipulate custom headers it adds in github.com/fabiolb/fabio
Fabio allows HTTP clients to manipulate custom headers it adds in github.com/fabiolb/fabio
GHSA
Fabio allows HTTP clients to manipulate custom headers it adds
ghsa·2025-05-29·CVSS 9.8
CVE-2025-48865 [CRITICAL] CWE-345 Fabio allows HTTP clients to manipulate custom headers it adds
Fabio allows HTTP clients to manipulate custom headers it adds
### Summary
Fabio allows clients to remove X-Forwarded headers (except X-Forwarded-For) due to a vulnerability in how it processes hop-by-hop headers.
Fabio adds HTTP headers like X-Forwarded-Host and X-Forwarded-Port when routing requests to backend applications. Since the receiving application should trust these headers, allowing HTTP clients to remove or modify them creates potential security vulnerabilities.
However, it was found that some of these custom headers can indeed be removed and, in certain cases, manipulated. The attack relies on the behavior that headers can be defined as hop-by-hop via the HTTP Connection header. By setting the following connection header, the X-Forwarded-Host header can, for example, be rem
OSV
Fabio allows HTTP clients to manipulate custom headers it adds
osv·2025-05-29·CVSS 9.8
CVE-2025-48865 [CRITICAL] Fabio allows HTTP clients to manipulate custom headers it adds
Fabio allows HTTP clients to manipulate custom headers it adds
### Summary
Fabio allows clients to remove X-Forwarded headers (except X-Forwarded-For) due to a vulnerability in how it processes hop-by-hop headers.
Fabio adds HTTP headers like X-Forwarded-Host and X-Forwarded-Port when routing requests to backend applications. Since the receiving application should trust these headers, allowing HTTP clients to remove or modify them creates potential security vulnerabilities.
However, it was found that some of these custom headers can indeed be removed and, in certain cases, manipulated. The attack relies on the behavior that headers can be defined as hop-by-hop via the HTTP Connection header. By setting the following connection header, the X-Forwarded-Host header can, for example, be rem
No detection rules found.
No public exploits indexed.
No writeups or analysis indexed.
2025-05-30
Published