CVE-2026-88009
Executive Summary
CVE-2026-88009 is a request-target parsing inconsistency (HTTP request smuggling/desynchronization class, CWE-444) in Traefik, the widely deployed open-source HTTP reverse proxy and load balancer. A rootless HTTP/1 request target is stored by Go in URL.Opaque while URL.Path remains empty; Traefik's rewriteRequestBuilder normalizes the path to / for routing, sanitization, forwardAuth, encodedCharacters evaluation, and access logging, yet forwards the verbatim URL.Opaque value to the backend. This allows cross-vhost routing bypass, path-scoped authorization bypass, and access-log evasion whenever the backend interprets the opaque target as a path. All deployments prior to Traefik 2.11.57 (2.x line) and 3.7.13 (3.x line) that expose Traefik in front of a backend which accepts opaque-style request targets are affected.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Technical Analysis
Traefik is an HTTP reverse proxy and load balancer that terminates client connections and forwards requests to upstream services based on routing rules (routers), middleware chains, and path-based matching. The vulnerability resides in the divergence between how Traefik evaluates a request and how it forwards that same request.
The root cause is a Go net/url representation quirk. When a client sends a "rootless" HTTP/1 request target — one that does not begin with a leading / (a relative or opaque target) — Go's URL parser stores the raw target in URL.Opaque and leaves URL.Path empty. Traefik's rewriteRequestBuilder path then constructs the effective request for internal decision-making by normalizing an empty URL.Path to /. Consequently:
- Routing evaluation is performed against
/. - Path sanitization is applied to
/. forwardAuthmiddleware evaluates the authorization decision against/.encodedCharactershandling is evaluated against/.- Access logging records the request as
/.
Critically, the actual value forwarded to the backend is URL.Opaque, verbatim. The backend may interpret that opaque target as a path (many upstream frameworks and application servers do). The result is a decision/enforcement inconsistency: Traefik's security controls see /, while the backend receives and acts on a different, attacker-controlled target string.
This is a classic parser differential pattern — the same bytes are interpreted differently by two components in the request path (here Traefik's internal normalization vs. the backend's path interpretation). The CWE-444 classification (Inconsistent Interpretation of HTTP Requests, "HTTP Request Smuggling") is therefore appropriate: the two-tier chain desynchronizes on the meaning of the request target.
Security-relevant consequences enumerated in the advisory:
- Cross-vhost routing bypass — routing is decided against
/, so an attacker can reach routes/hosts they should not, because the actual forwarded target differs from what matched. - Path-scoped authorization bypass —
forwardAuthand other path-scoped controls authorize/while the backend executes a different, more sensitive path. - Access-log evasion — logs record
/, concealing the true request target from auditing and detection.
No public proof-of-concept, Nuclei template, or exploit code is available. No CVE-specific technical artifact verifies the fix; patch confidence is 0/4 based on tracked sources, though the NVD description states fixed versions.
Exploitation Scenarios
No public PoC is available; the following attack chain is inferred at the vulnerability-class level (HTTP request-target parsing/desync) strictly from the NVD description. No specific endpoints, parameter names, or code symbols beyond those in the description are asserted.
Reconnaissance / target identification. Identify internet-exposed Traefik instances in front of backend applications — for example via Shodan dorks for
product:"Traefik"or a Traefik-serving HTTP title. Determine which backends sit behind path-scoped authorization (e.g.,forwardAuth-protected admin surfaces) and which perform vhost/path-based routing. Confirm the deployment is in the affected version range (< 2.11.57 for 2.x, < 3.7.13 for 3.x).Triggering the flaw class. The attacker crafts a raw HTTP/1 request whose request target is "rootless" — i.e., it does not start with
/and therefore does not populateURL.Pathin Go, landing instead inURL.Opaque. Because the target is attacker-controlled, the attacker chooses a string that the backend will interpret as a sensitive path, while Traefik normalizes the (empty) path to/for its own evaluation.Payload / execution method (class-level). The attacker sends this crafted request to Traefik's listener. Traefik evaluates routing, path sanitization,
forwardAuth, andencodedCharactersagainst/— passing checks intended for a benign or less-privileged path — and then forwards the verbatimURL.Opaquetarget to the upstream backend. The backend, interpreting the opaque target as a path, processes the request against the attacker's intended target rather than/. This is the essence of the parser differential: authorization and routing are decided on one interpretation, execution occurs on another.Post-exploitation impact (class-level).
- Cross-vhost routing bypass: requests are delivered to backend hosts/routes not authorized by the routing decision.
- Path-scoped authorization bypass:
forwardAuth-protected or path-restricted bindings are reached despite the auth decision having been made against/. - Access-log evasion: Traefik logs the request as
/, so the true target is absent from ordinary access logs, degrading detection and incident reconstruction.
Note: Achieving each impact depends on the backend interpreting the forwarded opaque target as a path — a backend-dependent precondition, not an unconditional outcome.
Impact Assessment
- Confidentiality (Low–Moderate): Path-scoped authorization and
forwardAuthbypass can expose resources whose access should have been denied. - Integrity (Low–Moderate): Attacker-controlled routing could direct requests to unintended upstreams or reach write-capable paths normally guarded by path-scoped checks.
- Availability (Low): Primarily a logic/authorization flaw; no direct DoS is described.
- Scope (Unchanged): The flaw affects the proxy/backend chain but, per the description, does not inherently cross into a separate authority.
- Attack Vector / Complexity: Network-reachable (AV:N), low complexity once the target is identified (AC:L), no privileges or user interaction required (PR:N/UI:N).
- Blast radius: Any organization running affected Traefik versions as an internet-facing edge proxy in front of a backend that treats opaque request targets as paths. Because Traefik is a common Kubernetes ingress controller and edge router, the potential population is large.
- Detection gap risk (High): The access-log evasion property means affected traffic may leave no conventional log trace, materially raising the risk that exploitation goes unnoticed without the network/edge detections below.
CVSS is not officially assigned (NVD score N/A); the vector above is an analyst estimate and must not be treated as an authoritative score. EPSS has not been published by FIRST.org at the time of writing.
Detection Guidance
Sigma Rule
title: Traefik Opaque HTTP/1 Request Target (CWE-444) Attempt
id: 8e3f1c2a-7b41-4d9e-a5c6-traefik88009
status: experimental
description: Detects HTTP/1 requests with a request target that does not begin with "/" (rootless/opaque target), the precondition for CVE-2026-88009 in Traefik.
references:
- https://nvd.nist.gov/vuln/detail/CVE-2026-88009
author: valtersit.com Threat Intelligence
logsource:
category: webserver
detection:
selection_method:
cs-method:
- GET
- POST
- PUT
- HEAD
- OPTIONS
- DELETE
selection_no_slash:
cs-uri|re: '^(?!\/).+'
filter_scheme_absolute:
cs-uri|re: '^(?:[a-zA-Z][a-zA-Z0-9+.\-]*:\/\/)'
condition: selection_method and selection_no_slash and not filter_scheme_absolute
fields:
- c-ip
- cs-method
- cs-uri
- cs-host
falsepositives:
- Proxies/health checks that emit absolute-form or non-slash request targets
- Buggy clients issuing malformed but benign targets
level: high
YARA Rule
rule CVE_2026_88009_Traefik_Opaque_Target
{
meta:
author = "valtersit.com Threat Intelligence"
description = "Detects HTTP/1 request lines using a rootless/opaque request target associated with CVE-2026-88009 in Traefik"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-88009"
cve = "CVE-2026-88009"
date = "2026-01-01"
severity = "high"
strings:
// Line start: common HTTP methods followed by a space, then a non-slash authority/opaque target (not absolute-form)
$m1 = /(GET|POST|PUT|HEAD|OPTIONS|DELETE|PATCH|CONNECT|TRACE) (?!\/)(?!https?:\/\/)[^ \r\n]+ HTTP\/1\.[01]/ nocase
// Also flag when the opaque target references a sensitive-looking path via %2f or $ delimiters
$u1 = /%2f/i
$u2 = /%252f/i
condition:
any of ($m1) or (any of ($u1, $u2) and 1 of ($m1))
}
Suricata IDS Rule
alert http any any -> any any (msg:"CVE-2026-88009 Attempt - Traefik Opaque HTTP/1 Request Target"; flow:established,to_server; content:"HTTP/1."; http_header_names; pcre:"/^(GET|POST|PUT|HEAD|OPTIONS|DELETE|PATCH) (?!\/)(?!https?:)[^ \r\n]+ HTTP\/1\.[01]/H"; classtype:attempted-admin; reference:cve,CVE-2026-88009; reference:url,nvd.nist.gov/vuln/detail/CVE-2026-88009; metadata:created_at 2026_01_01, updated_at 2026_01_01, confidence Medium; sid:8800901; rev:1;)
Elastic Detection
// Detects edge/proxy HTTP requests whose request target lacks a leading slash
// (rootless/opaque target) — precondition for CVE-2026-88009 Traefik bypass.
network where
network.protocol == "http" and
http.request.method in ("GET","POST","PUT","HEAD","OPTIONS","DELETE","PATCH") and
http.request.uri != null and
not http.request.uri like "/*" and
not http.request.uri like "http*"
Splunk SPL Query
index=proxy OR index=web OR index=traefik sourcetype=access_combined OR sourcetype=traefik
| eval raw_method_uri=_raw
| regex raw_method_uri="(?i)^(GET|POST|PUT|HEAD|OPTIONS|DELETE|PATCH)\s+(?!\\/)(?!https?:\\/\\/)\S+\s+HTTP\\/1\\.[01]"
| table _time, host, src, dest, uri_path, status, useragent
| sort - _time
Wazuh OSSEC Rule
<group name="web,traefik,attack,">
<rule id="880090" level="12">
<decoded_as>web-accesslog</decoded_as>
<field name="url">(?!\/)(?!https?:\/\/)\S+</field>
<regex type="pcre2">^(GET|POST|PUT|HEAD|OPTIONS|DELETE|PATCH)\s+(?!\/)(?!https?:\/\/)\S+\s+HTTP\/1\.[01]</regex>
<description>CVE-2026-88009: rootless/opaque HTTP/1 request target against Traefik (parser-differential / routing & auth bypass attempt)</description>
<mitre>
<id>T1190</id>
</mitre>
<group>cve_2026_88009,</group>
</rule>
</group>
Mitigation & Patch Guidance
Patch confidence: 0/4 (UNPATCHED — no patch evidence from any tracked source). The NVD description states the issue is fixed in versions 2.11.57 (2.x) and 3.7.13 (3.x), but no patch artifact, diff, or advisory was verified from a tracked source, and no workaround is provided by the vendor text. Treat the following as interim guidance.
Immediate mitigations (pre-patch):
- Reject malformed request targets at the edge. Front Traefik with an upstream protection layer (WAF, CDN, or edge LB) that rejects HTTP/1 requests whose request target does not begin with
/(and is not a valid absolute-form URI). This directly neutralizes the rootless/opaque precondition. - Normalize enforcement vs. forwarding. Where architecturally possible, ensure any component evaluating paths also enforces the same target it forwards — avoid trusting
URL.Opaqueforwarding semantics against normalized routing/auth decisions. - Tighten backend path interpretation. Configure backends to reject or canonicalize opaque/rootless request targets so they cannot be interpreted as sensitive paths.
- Enable comprehensive request logging that captures raw request lines, not just normalized
URL.Path, to close the access-log evasion gap while unpatchable. - Restrict exposure: limit internet-facing Traefik where feasible and enforce least-privilege on path-scoped authorization surfaces.
- Reject malformed request targets at the edge. Front Traefik with an upstream protection layer (WAF, CDN, or edge LB) that rejects HTTP/1 requests whose request target does not begin with
Patch / upgrade steps:
- Upgrade Traefik 2.x → 2.11.57 or later, and 3.x → 3.7.13 or later, as stated in the NVD description. Verify the upgrade via an independent artifact (release notes, signed container image digest, or vendor commit) because no patch source is currently tracked (confidence 0/4).
- After upgrade, retest routing,
forwardAuth,encodedCharacters, and access logging to confirm the fixed behavior enforces a consistent path across evaluation and forwarding.
Long-term hardening:
- Adopt parser-consistency review practices across the full request chain (proxy → backend) to catch class-wide (CWE-444) desync issues early.
- Maintain a front-line WAF/edge rule set that blocks non-slash and ambiguous request targets by default.
- Monitor Traefik release advisories and subscribe to CVE feeds for this product line.
- Log and baseline raw request-target values; alert on any non-
/, non-absolute targets reaching the proxy.
References
- NVD — CVE-2026-88009: https://nvd.nist.gov/vuln/detail/CVE-2026-88009
- MITRE CWE-444 — Inconsistent Interpretation of HTTP Requests ("HTTP Request Smuggling"): https://cwe.mitre.org/data/definitions/444.html
- MITRE ATT&CK T1190 — Exploit Public-Facing Application: https://attack.mitre.org/techniques/T1190/
- Traefik project (release/advisory source to verify fixed versions 2.11.57 and 3.7.13): https://github.com/traefik/traefik/releases
- FIRST EPSS: no score published at time of writing — https://www.first.org/epss/
Threat actor / exploit-in-the-wild status: No public PoC, no Nuclei template, no exploit code, and no CISA KEV listing are associated with CVE-2026-88009 as of this report. No named threat-actor campaign has been observed. However, the access-log evasion property creates a detection blind spot; organizations should not assume absence of exploitation merely because proxy access logs look clean. All detection content above is heuristic and should be tuned against production baselines to control false positives.