high CVSS 8.2 EPSS 0.30%

CVE-2026-88879·Traefik vulnerability

Traefik is an HTTP reverse proxy and load balancer. In Traefik v1.x, v2.x through v2.11.55, and v3.0.0 through v3.7.11, header names are canonicalized only on dashes, so X-Auth-User, X_Auth_User and X.Auth.User are treated as three distinct headers by Traefik, while backends that derive variable names from header names (CGI, WSGI, PHP, NGINX and others) collapse them into a single variable. A client can therefore smuggle a dot-form alias of a header that Traefik manages past the middleware managing it — for example supplying X.Authenticated.User alongside the canonical X-Authenticated-User written by the ForwardAuth middleware — causing such a backend to read the client-supplied value instead of the identity Traefik asserted. In the tested configuration (PHP 8.2 built-in SAPI over an HTTP/1 backend path), Go's lexical header ordering makes the attacker-supplied value win deterministically, so a client that ForwardAuth admits as a low-privilege identity can be treated by the backend as a different user or role. Any header Traefik sets is affected, not only ForwardAuth's. This is an incomplete fix for GHSA-x677-9fxg-v5c5, which blocked only the underscore form. Fixed in v2.11.56 and v3.7.12, which add the aliasHeadersStrategy entry-point option; because it defaults to 'keep' for backwards compatibility, it must be explicitly set to 'delete' or 'reject' for the fix to take effect. Unmaintained release lines will not receive a patch.

Severity
high
Software
Traefik
Fixed in
3.7.12
Published

How likely is exploitation

FIRST's Exploit Prediction Scoring System puts the probability of this CVE being exploited in the next 30 days at 0.30% — higher than 20% of all published CVEs. EPSS is an independent forecast of exploitation, not a severity rating: it says nothing about how much damage a successful attack does, which is what a CVSS score measures.

Read the two together. CVE-2026-88879 scores 8.2 on CVSS, so a successful attack would be serious — but at 0.30%, almost nobody is currently attempting it. That is a different situation from a flaw under mass exploitation, and it is usually the difference between patching on your next maintenance window and patching tonight.

Affected versions

From: 3.0.0

Until: 3.7.12

Fixed in: 3.7.12

How to fix this CVE

Upgrade Traefik to version 3.7.12 or later to address a header canonicalization bypass that allows attackers to spoof authentication headers. Additionally, configure the aliasHeadersStrategy entry-point option to 'delete' or 'reject' (not the default 'keep') to enforce strict header validation and prevent client-supplied header aliases from bypassing Traefik's middleware controls.

sudo dnf update traefik

Defensia detects this vulnerability

What an exploitation attempt looks like

Sample log line indicative of exploitation attempts:

POST|GET .* HTTP/1\.1.*X[._]Auth[._]User:.*\|X[._]Authenticated[._]User:.*\|X[._]Remote[._]User:.*

WAF mitigation (if patching is not yet possible)

Add this rule to your WAF to block exploitation attempts while you schedule the patch.

Implement a WAF rule that blocks requests containing header name variations (underscores or dots in place of dashes) for sensitive authentication headers such as X-Authenticated-User, X-Auth-User, X-Remote-User, or custom ForwardAuth headers. Normalize all inbound headers to dash-separated lowercase before forwarding to Traefik.

How to check if you are affected

  1. Check installed Traefik version: traefik version or docker exec <container_id> traefik version
  2. Verify your entry-point configuration: grep -r 'aliasHeadersStrategy' /etc/traefik/ or check your traefik.yaml/traefik.toml for the presence of this setting
  3. Search logs for suspicious header variations: grep -i 'x[._-]auth' /var/log/traefik/access.log to identify requests with dot or underscore variants of managed headers
  4. Confirm the fix: Run traefik version and confirm output shows v3.7.12 or higher, and validate aliasHeadersStrategy is set to 'delete' or 'reject' in your configuration files

FAQ

What is CVE-2026-88879?

This vulnerability allows attackers to bypass Traefik's header validation by supplying dot or underscore variants of headers (e.g., X.Authenticated.User instead of X-Authenticated-User). Backend systems normalize these variants into the same variable, allowing an attacker to inject unauthorized identity claims that Traefik's middleware fails to catch.

Is CVE-2026-88879 being actively exploited?

No, there is no evidence of active exploitation in the CISA KEV catalog and no public exploits are available. However, the vulnerability is straightforward to exploit and should be patched immediately to prevent opportunistic attacks.

What versions of Traefik are affected by CVE-2026-88879?

Traefik v1.x, v2.x through v2.11.55, and v3.0.0 through v3.7.11 are affected. The fix is available in v2.11.56 and v3.7.12 or later.

How do I check if my server is vulnerable to CVE-2026-88879?

Run 'traefik version' to check your installed version. If it reports 3.7.11 or earlier, you are vulnerable. Additionally, check that aliasHeadersStrategy is explicitly configured as 'delete' or 'reject'—the default 'keep' does not mitigate the risk.

Does Defensia detect CVE-2026-88879?

Yes — Defensia's CVE advisory scanner compares installed package versions against the NVD database. If Traefik is installed on a monitored server, CVE-2026-88879 will appear in your dashboard with remediation steps.

Related Traefik CVEs

CVE-2026-48491CVSS 10Traefik is an HTTP reverse proxy and load balancer. From 3.7.0 until 3.7.3, there is a high severity vulnerability in Traefik's domain-fronting protection (SNICheck) that allows an unauthenticated client to bypass mutual TLS enforced through wildcard router TLSOptions. When a router uses a wildcard host rule such as Host(*.example.com) with stricter TLS options (for example RequireAndVerifyClientCert), SNICheck resolves the TLS options for the HTTP Host header using exact map lookups only and never applies wildcard matching. If another permissive SNI is served on the same entrypoint, an attacker can complete the TLS handshake under the permissive options and then send an HTTP Host header targeting the wildcard-protected backend, reaching it without presenting a client certificate. This affects the regular HTTPS / HTTP-2 path and does not require HTTP/3. This vulnerability is fixed in 3.7.3.
CVE-2026-54763CVSS 10Traefik is an HTTP reverse proxy and load balancer. Prior to v2.11.51, v3.6.22, and v3.7.6, Traefik's BasicAuth, DigestAuth, and ForwardAuth middlewares strip canonical-cased spoofed identity headers before writing Traefik's own value, but do not account for underscore-variant header names, which many backends normalize identically to dashed forms. An attacker able to reach a protected route can inject an underscore-variant header that survives Traefik's stripping and reaches the backend alongside, or on the unauthenticated ForwardAuth authResponseHeaders path instead of, the value Traefik intended to set, spoofing identity or authorization context. This issue is fixed in versions v2.11.51, v3.6.22, and v3.7.6.
CVE-2026-53622CVSS 10Traefik is an HTTP reverse proxy and load balancer. Versions prior to 3.7.3, 3.6.18, and 2.11.51 have a critical vulnerability in Traefik's HTTP/3 (QUIC) TLS configuration selection that allows unauthenticated clients to bypass router-specific mTLS enforcement. When HTTP/3 is enabled on an entrypoint, the TLS handshake selects the applicable TLS configuration through an exact, case-sensitive lookup on the SNI value, which fails to match wildcard host patterns (e.g., *.example.com) or case variants of the configured hostname. Because the handshake falls back to the default TLS configuration — which may not require client certificates — a client can complete the QUIC handshake without presenting a certificate, while the subsequent HTTP routing layer still dispatches the request to a backend protected by a router-specific mTLS policy. The issue affects deployments where HTTP/3 is enabled, a router uses a wildcard Host rule or case-insensitive hostname matching, a router-specific TLSOptions enforces client certificate authentication, and UDP access to the entrypoint is reachable by an attacker. This vulnerability is fixed in versions 3.7.3, 3.6.18, and 2.11.51.
CVE-2026-48020CVSS 10Traefik is an HTTP reverse proxy and load balancer. Prior to 2.11.48, 3.6.19, and 3.7.3, there is a high severity vulnerability in Traefik's StripPrefix middleware that allows an unauthenticated attacker to bypass route-level authentication and authorization. When a public router matches on a PathPrefix rule and applies the StripPrefix middleware, a request path containing .. or its percent-encoded form %2e%2e can match the public route at routing time and then, after the prefix is stripped and the path is normalized, resolve to a path served by a separate, authenticated router. As a result, an attacker can reach protected backend paths — such as admin or internal configuration endpoints — without satisfying the authentication middleware attached to the protected router. This vulnerability is fixed in 2.11.48, 3.6.19, and 3.7.3.
CVE-2026-44774CVSS 9.9Traefik is an HTTP reverse proxy and load balancer. Prior to 2.11.46, 3.6.17, and 3.7.1, Traefik's Kubernetes Gateway API provider allows a tenant with HTTPRoute creation permissions to expose the REST provider handler, bypassing the providers.rest.insecure=false setting. The Gateway provider accepts any TraefikService backend reference whose name ends with @internal, making it possible to route traffic to rest@internal in addition to the intended api@internal. In shared Gateway deployments where the REST provider is enabled, this allows a low-privileged actor to gain live dynamic configuration write access to Traefik, enabling unauthorized reconfiguration of routers and services. This vulnerability is fixed in 2.11.46, 3.6.17, and 3.7.1.

References

Track CVEs across your fleet automatically

Defensia scans your Linux servers and tells you exactly which ones are running vulnerable versions — including CVE-2026-88879. Free for 1 server.

Get started free