Description
Fabio is an HTTP(S) and TCP router for deploying applications managed by consul. From 1.6.6 until 1.7.2, the CVE-2025-48865 fix in proxy/http_headers.go uses protectHeaders for a hardcoded set of forwarded headers but omits the operator-configured ClientIPHeader, TLSHeader, and RequestID names. In proxy/http_proxy.go, HTTPProxy.ServeHTTP calls addHeaders to set these trust headers before Go ReverseProxy processes the inbound Connection header, allowing an unauthenticated client to name and remove the configured headers before the request reaches the backend. Deployments that enable the corresponding proxy.header options can therefore lose client-IP, TLS-termination, or request-correlation signals used by backend authorization and auditing; the options are empty by default, and the hardcoded protected forwarded headers are unaffected. This issue is fixed in version 1.7.2.
Published: 2026-09-21
Score: 5.8 Medium
EPSS: n/a
KEV: No
Impact: Loss of trust headers leading to potential authentication and audit failures
Action: Upgrade Immediately
AI Analysis

Impact

Fabio is an HTTP(S) and TCP router that forwards headers to backends based on configuration. The 2025‑48865 patch omitted protection for operator‑configured trust headers – ClientIPHeader, TLSHeader and RequestID. As a result, any unauthenticated client can send a Connection header that removes these configured headers before they reach the backend. Backends rely on these headers for client‑IP verification, TLS termination status and request correlation. By stripping them, an attacker can cause the backend to believe the request originated from an untrusted source, potentially bypassing authentication checks or skewing audit logs. This flaw is an Improper Restriction of Operations within the Bounds of a Process (CWE‑348) and an Improper Authentication (CWE‑290).

Affected Systems

Versions of Fabio from 1.6.6 through 1.7.1 are affected. The vulnerability was introduced in the 2025‑48865 patch, which protects only a hard‑coded list of forwarded headers and leaves the operator‑configured headers unprotected. Fabio is used in environments managed by Consul to route HTTP and TCP traffic. Any installation that has enabled the proxy.header options for ClientIPHeader, TLSHeader or RequestID in those versions is vulnerable.

Risk and Exploitability

The CVSS score of 5.8 indicates a moderate impact with potential damage to confidentiality and integrity. The EPSS score is not available, so the current exploitation probability is unclear. The vulnerability is not listed in CISA’s KEV catalog. Attackers can exploit it by crafting a request that includes a Connection header designed to drop the trusted headers; this is possible for any unauthenticated client that can reach Fabio. Once the headers are removed, backends may fail to authenticate the client or may record incorrect audit information, leading to privilege escalation or data leakage.

Generated by OpenCVE AI on September 21, 2026 at 17:36 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Fabio to version 1.7.2 or later, which fully protects the operator‑configured headers.
  • If an upgrade is not immediately possible, disable the proxy.header options for ClientIPHeader, TLSHeader and RequestID to prevent them from being stripped by unauthenticated clients.
  • After applying the fix or reconfiguration, monitor backend logs for missing client‑IP, TLS‑termination or request‑correlation information to ensure the protection is effective.

Generated by OpenCVE AI on September 21, 2026 at 17:36 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Mon, 21 Sep 2026 17:45:00 +0000

Type Values Removed Values Added
First Time appeared Fabiolb
Fabiolb fabio
Vendors & Products Fabiolb
Fabiolb fabio

Mon, 21 Sep 2026 16:30:00 +0000

Type Values Removed Values Added
Description Fabio is an HTTP(S) and TCP router for deploying applications managed by consul. From 1.6.6 until 1.7.2, the CVE-2025-48865 fix in proxy/http_headers.go uses protectHeaders for a hardcoded set of forwarded headers but omits the operator-configured ClientIPHeader, TLSHeader, and RequestID names. In proxy/http_proxy.go, HTTPProxy.ServeHTTP calls addHeaders to set these trust headers before Go ReverseProxy processes the inbound Connection header, allowing an unauthenticated client to name and remove the configured headers before the request reaches the backend. Deployments that enable the corresponding proxy.header options can therefore lose client-IP, TLS-termination, or request-correlation signals used by backend authorization and auditing; the options are empty by default, and the hardcoded protected forwarded headers are unaffected. This issue is fixed in version 1.7.2.
Title Fabio - Incomplete fix for CVE-2025-48865: operator-configured trust headers (clientip/tls/requestid) still strippable via the Connection header
Weaknesses CWE-290
CWE-348
References
Metrics cvssV3_1

{'score': 5.8, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:L/A:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-09-21T16:11:21.044Z

Reserved: 2026-07-14T22:48:09.781Z

Link: CVE-2026-62987

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-21T17:17:38.340

Modified: 2026-09-21T17:17:38.340

Link: CVE-2026-62987

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-21T17:30:17Z

Weaknesses
  • CWE-290

    Authentication Bypass by Spoofing

  • CWE-348

    Use of Less Trusted Source