Traefik: Cross-user response poisoning via proxied CONNECT on Traefik's shared backend keep-alive pool
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 2.11.53, 3.6.24, 3.7.9
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
- Exploitation: none
- Automatable: yes
- Technical impact: partial
Summary
Traefik is an open source HTTP reverse proxy and load balancer. Prior to 2.11.53, 3.6.24, and 3.7.9, Traefik's default HTTP reverse proxy forwards a plain HTTP/2 or HTTP/3 CONNECT request and its body to an HTTP/1.1 upstream through a shared net/http.Transport. When the upstream answers the CONNECT with a keep-alive non-2xx response and does not drain the body, Traefik returns the desynchronized backend socket to its shared pool and reuses it for other clients. An unauthenticated attacker can use this behavior to make a different client read the attacker's smuggled response, which can include authenticated or private content from another request. The ForwardAuth middleware with forwardBody true and preserveRequestMethod true can re-issue a CONNECT with the buffered body attached, exposing the auth-client pool to the same desynchronization. This issue is fixed in 2.11.53, 3.6.24, and 3.7.9.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: yes · Technical impact: partial
- Record last updated
Affected versions
- traefik traefik
fixed in 2.11.53; From 3.0.0 · fixed in 3.6.24; From 3.7.0 · fixed in 3.7.9
- github.com/traefik/traefik/v2Go
fixed in 2.11.53
- github.com/traefik/traefik/v3Go
fixed in 3.6.24
- github.com/traefik/traefik/v3Go
From 3.7.0 · fixed in 3.7.9
- github.com/traefik/traefikGo
through 1.7.34
- github.com/traefik/traefikGo
All versions
- github.com/traefik/traefik/v3Go
fixed in 3.6.24; From 3.7.0 · fixed in 3.7.9