Skip to content
Heist/ feed
UnratedFix available

Fabio - Incomplete fix for CVE-2025-48865: operator-configured trust headers (clientip/tls/requestid) still strippable via the Connection header

Type: advisorySource: OSV2 source records

**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, remoteIP)` - TLSHeader (`proxy.header.tls`) - http_headers.go:153 `r.Header.Set(cfg.TLSHeader, cfg.TLSHeaderValue)` (TLS connections) - RequestID (`proxy.header.requestid`) - http_proxy.go:90 `r.Header.Set(p.Config.RequestID, id())` Order of operations in HTTPProxy.ServeHTTP: (1) line 90 sets RequestID; (2) line 175 calls addHeaders, which sweeps the Connection header (keeping the three configured names because they are absent from protectHeaders) and then sets ClientIPHeader/TLSHeader; (3) line 223 runs the Go `httputil.ReverseProxy`, whose `removeHopByHopHeaders` (Go stdlib net/http/httputil/reverseproxy.go) iterates the inbound `Connection` header and `h.Del`s every listed header. The three trust headers fabio just set are therefore deleted before the request reaches the backend. ### PoC Configure `proxy.header.clientip=X-Client-IP`, `pr

Announced Group revision 1
Original source ↗

GO-2026-6566

Revision 1

Fabio - Incomplete fix for CVE-2025-48865: operator-configured trust headers (clientip/tls/requestid) still strippable via the Connection header in github.com/fabiolb/fabio

Fabio - Incomplete fix for CVE-2025-48865: operator-configured trust headers (clientip/tls/requestid) still strippable via the Connection header in github.com/fabiolb/fabio

Imported from structured advisory data. Source references identify upstream records or fields; verify affected versions and your deployed configuration.

Security context

Source reference: osv:GO-2026-6566

github.com/fabiolb/fabio

Source reference: /affected/0/package/name

Affected versions
Not stated in this record
Fixed versions
1.7.2

Source reference: /affected/0/ranges

Prerequisites
Not stated in this record

Structured affected-version data

Original package identities and version rules from this source.

[
  {
    "ranges": [
      {
        "type": "SEMVER",
        "events": [
          {
            "introduced": "1.6.6"
          },
          {
            "fixed": "1.7.2"
          }
        ]
      }
    ],
    "package": {
      "name": "github.com/fabiolb/fabio",
      "purl": "pkg:golang/github.com/fabiolb/fabio",
      "ecosystem": "Go"
    },
    "database_specific": {
      "source": "https://vuln.go.dev/ID/GO-2026-6566.json"
    },
    "ecosystem_specific": {
      "imports": [
        {
          "path": "github.com/fabiolb/fabio",
          "symbols": [
            "main",
            "newHTTPProxy"
          ]
        },
        {
          "path": "github.com/fabiolb/fabio/proxy",
          "symbols": [
            "HTTPProxy.ServeHTTP",
            "addHeaders"
          ]
        }
      ]
    }
  }
]
Related CVEs
CVE-2026-62987

Source reference: /aliases

Publisher severity

No explicit severity was provided.

Event
#63841 · Revision 1
Added to Heist Feed
Publisher date
Read the original announcement

GHSA-fq95-v8xc-jm3v

Primary source · Revision 1

Imported from structured advisory data. Source references identify upstream records or fields; verify affected versions and your deployed configuration.

Security context

Source reference: osv:GHSA-fq95-v8xc-jm3v

github.com/fabiolb/fabio

Source reference: /affected/0/package/name

Affected versions
Not stated in this record
Fixed versions
1.7.2

Source reference: /affected/0/ranges

Prerequisites
Not stated in this record

Structured affected-version data

Original package identities and version rules from this source.

[
  {
    "ranges": [
      {
        "type": "SEMVER",
        "events": [
          {
            "introduced": "1.6.6"
          },
          {
            "fixed": "1.7.2"
          }
        ]
      }
    ],
    "package": {
      "name": "github.com/fabiolb/fabio",
      "purl": "pkg:golang/github.com/fabiolb/fabio",
      "ecosystem": "Go"
    },
    "database_specific": {
      "source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/09/GHSA-fq95-v8xc-jm3v/GHSA-fq95-v8xc-jm3v.json",
      "last_known_affected_version_range": "<= 1.7.1"
    }
  }
]
Related CVEs
CVE-2026-62987

Source reference: /aliases

Publisher severity

No explicit severity was provided.

Event
#63878 · Revision 1
Added to Heist Feed
Publisher date
Read the original announcement