{"id":"GHSA-6qq8-5wq3-86rp","summary":"Traefik vulnerable to Open Redirect via handling of X-Forwarded-Prefix header","details":"## Summary\n\nThere exists a potential open redirect vulnerability in Traefik's handling of the `X-Forwarded-Prefix` header. Active Exploitation of this issue is unlikely as it would require active header injection, however the Traefik team addressed this issue nonetheless to prevent abuse in e.g. cache poisoning scenarios.\n\n## Details\n\nThe Traefik API dashboard component doesn't validate that the value of the header `X-Forwarded-Prefix` is a site relative path and will redirect to any header provided URI.\n\ne.g.\n\n```\n$ curl --header 'Host:traefik.localhost' --header 'X-Forwarded-Prefix:https://example.org' 'http://localhost:8081'\n\u003ca href=\"https://example.org/dashboard/\"\u003eFound\u003c/a\u003e.`\n```\n\n### Impact\nA successful exploitation of an open redirect can be used to entice victims to disclose sensitive information.\n\n### Workarounds\n\nBy using the `headers` middleware, the request header `X-Forwarded-Prefix` value can be overridden by the value `.` (dot)\n\n- https://docs.traefik.io/v2.2/middlewares/headers/#customrequestheaders\n- https://docs.traefik.io/v1.7/basics/#custom-headers\n\n### For more information\n\nIf you have any questions or comments about this advisory, open an issue in [Traefik](https://github.com/containous/traefik/issues).\n\n## Credit\n\nThis issue was found by the GitHub Application Security Team and reported on behalf of the GHAS by the GitHub Security Lab Team.","aliases":["CVE-2020-15129"],"modified":"2026-07-08T06:28:33.650747502Z","published":"2022-02-11T23:19:21Z","database_specific":{"github_reviewed_at":"2021-05-24T18:21:00Z","github_reviewed":true,"nvd_published_at":"2020-07-30T16:15:00Z","severity":"MODERATE","cwe_ids":["CWE-601"]},"references":[{"type":"WEB","url":"https://github.com/containous/traefik/security/advisories/GHSA-6qq8-5wq3-86rp"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2020-15129"},{"type":"WEB","url":"https://github.com/containous/traefik/pull/7109"},{"type":"WEB","url":"https://github.com/containous/traefik/commit/cfa04c300c5db95ae8a52c31a9d973b6dd9c2254"},{"type":"WEB","url":"https://github.com/containous/traefik/commit/e63db782c11c7b8bfce30be4c902e7ef8f9f33d2"},{"type":"WEB","url":"https://github.com/traefik/traefik/commit/e2c5f3712f68993de8ed3cb30da9ec0aa11acb09"},{"type":"WEB","url":"https://github.com/containous/traefik/releases/tag/v1.7.26"},{"type":"WEB","url":"https://github.com/containous/traefik/releases/tag/v2.2.8"},{"type":"WEB","url":"https://github.com/containous/traefik/releases/tag/v2.3.0-rc3"},{"type":"PACKAGE","url":"https://github.com/traefik/traefik"}],"affected":[{"package":{"name":"github.com/traefik/traefik","ecosystem":"Go","purl":"pkg:golang/github.com/traefik/traefik"},"ranges":[{"type":"SEMVER","events":[{"introduced":"1.5.0-rc5"},{"fixed":"1.7.26"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2022/02/GHSA-6qq8-5wq3-86rp/GHSA-6qq8-5wq3-86rp.json"}},{"package":{"name":"github.com/traefik/traefik/v2","ecosystem":"Go","purl":"pkg:golang/github.com/traefik/traefik/v2"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"2.3.0-rc6"}]}],"database_specific":{"last_known_affected_version_range":"\u003c 2.2.8","source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2022/02/GHSA-6qq8-5wq3-86rp/GHSA-6qq8-5wq3-86rp.json"}},{"package":{"name":"github.com/containous/traefik","ecosystem":"Go","purl":"pkg:golang/github.com/containous/traefik"},"ranges":[{"type":"SEMVER","events":[{"introduced":"1.5.0-rc5"},{"fixed":"1.7.26"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2022/02/GHSA-6qq8-5wq3-86rp/GHSA-6qq8-5wq3-86rp.json"}},{"package":{"name":"github.com/containous/traefik/v2","ecosystem":"Go","purl":"pkg:golang/github.com/containous/traefik/v2"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"2.2.8"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2022/02/GHSA-6qq8-5wq3-86rp/GHSA-6qq8-5wq3-86rp.json"}},{"package":{"name":"github.com/traefik/traefik/v2","ecosystem":"Go","purl":"pkg:golang/github.com/traefik/traefik/v2"},"ranges":[{"type":"SEMVER","events":[{"introduced":"2.3.0-rc1"},{"fixed":"2.3.0-rc6"}]}],"database_specific":{"last_known_affected_version_range":"\u003c 2.3.0-rc3","source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2022/02/GHSA-6qq8-5wq3-86rp/GHSA-6qq8-5wq3-86rp.json"}},{"package":{"name":"github.com/containous/traefik/v2","ecosystem":"Go","purl":"pkg:golang/github.com/containous/traefik/v2"},"ranges":[{"type":"SEMVER","events":[{"introduced":"2.3.0-rc1"},{"fixed":"2.3.0-rc3"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2022/02/GHSA-6qq8-5wq3-86rp/GHSA-6qq8-5wq3-86rp.json"}},{"package":{"name":"github.com/traefik/traefik/api","ecosystem":"Go","purl":"pkg:golang/github.com/traefik/traefik/api"},"ranges":[{"type":"SEMVER","events":[{"introduced":"1.5.0-rc5"},{"fixed":"1.7.26"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2022/02/GHSA-6qq8-5wq3-86rp/GHSA-6qq8-5wq3-86rp.json"}},{"package":{"name":"github.com/traefik/traefik/v2/pkg/api","ecosystem":"Go","purl":"pkg:golang/github.com/traefik/traefik/v2/pkg/api"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"2.3.0-rc6"}]}],"database_specific":{"last_known_affected_version_range":"\u003c 2.2.8","source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2022/02/GHSA-6qq8-5wq3-86rp/GHSA-6qq8-5wq3-86rp.json"}},{"package":{"name":"github.com/traefik/traefik/v2/pkg/api","ecosystem":"Go","purl":"pkg:golang/github.com/traefik/traefik/v2/pkg/api"},"ranges":[{"type":"SEMVER","events":[{"introduced":"2.3.0-rc1"},{"fixed":"2.3.0-rc6"}]}],"database_specific":{"last_known_affected_version_range":"\u003c 2.3.0-rc3","source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2022/02/GHSA-6qq8-5wq3-86rp/GHSA-6qq8-5wq3-86rp.json"}},{"package":{"name":"github.com/containous/traefik/api","ecosystem":"Go","purl":"pkg:golang/github.com/containous/traefik/api"},"ranges":[{"type":"SEMVER","events":[{"introduced":"1.5.0-rc5"},{"fixed":"1.7.26"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2022/02/GHSA-6qq8-5wq3-86rp/GHSA-6qq8-5wq3-86rp.json"}},{"package":{"name":"github.com/containous/traefik/v2/pkg/api","ecosystem":"Go","purl":"pkg:golang/github.com/containous/traefik/v2/pkg/api"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"2.2.8"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2022/02/GHSA-6qq8-5wq3-86rp/GHSA-6qq8-5wq3-86rp.json"}},{"package":{"name":"github.com/containous/traefik/v2/pkg/api","ecosystem":"Go","purl":"pkg:golang/github.com/containous/traefik/v2/pkg/api"},"ranges":[{"type":"SEMVER","events":[{"introduced":"2.3.0-rc1"},{"fixed":"2.3.0-rc3"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2022/02/GHSA-6qq8-5wq3-86rp/GHSA-6qq8-5wq3-86rp.json"}}],"schema_version":"1.7.5","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:N/I:H/A:N"}]}