{"id":"CVE-2026-49826","aliases":["BIT-concourse-2026-49826","GHSA-8w27-c4vc-88q9","GO-2026-5866"],"url":"https://o3.security/vulnerability/CVE-2026-49826","summary":"Concourse login flow has an open redirect issue","details":"### Impact\n\nAn attacker is able to craft and send a user a URL that will redirect the user from the Concourse web server to any other site. This could be used in a phishing attack to steal user's credentials.\n\n### Patches\n\nThis has been fixed in 8.2.3\n\n### Workarounds\n\nNone.\n\n### Exploit\n\nVulnerable code was in: https://github.com/concourse/concourse/blob/ea7b812e3a88fdd070f0faece874e8a2d4fbb31c/skymarshal/skyserver/skyserver.go#L162-L170\n\nThe issue stems from the underlying processing logic of Go's `url` package. Normally, `ParseRequestURI()` will eventually reach an internal `url.setPath()` function, where the URL will be decoded. However, if `RawPath` is not empty and `validEncoded(RawPath)` is true, and the decoded result equals `Path`, then return `RawPath` as is; otherwise, escape `Path` again, i.e., decode it again.\n\nIn other words, if the URL contains dangerous characters that should be escaped, such as backslashes (`\\`), then an extra decoding step will be performed. Therefore, `/%2Fexample.com` will be parsed as `//example.com`.\n\nOn vulnerable versions of Concourse, add `/sky/login?redirect_uri=/%252Fexample.com/\\` to your Concourse external URL, login as usual, and you should be redirected to `example.com` instead of your Concourse web server. The redirect happens after the login flow completes. No credentials are leaked.","published":"2026-08-14T16:25:56.406Z","modified":"2026-10-21T02:58:23.600021046Z","cvss":null,"epss":{"score":0.00299,"percentile":0.22611,"asOf":"2026-09-17"},"cisaKev":null,"exploitsKnown":0,"affectedPackages":[{"ecosystem":"Go","name":"github.com/concourse/concourse","fixedVersion":"1.6.1-0.20260526150512-ac60be5f0435"}],"fix":{"url":"https://github.com/concourse/concourse/commit/ac60be5f0435b6592f5a4fcc089050d72ad2452c","label":"concourse/concourse@ac60be5"},"references":[{"type":"WEB","url":"https://github.com/concourse/concourse/releases/tag/v8.2.3"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/49xxx/CVE-2026-49826.json"},{"type":"ADVISORY","url":"https://github.com/concourse/concourse/security/advisories/GHSA-8w27-c4vc-88q9"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-49826"},{"type":"FIX","url":"https://github.com/concourse/concourse/commit/ac60be5f0435b6592f5a4fcc089050d72ad2452c"},{"type":"PACKAGE","url":"https://github.com/concourse/concourse"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2026-10-21T02:58:23.600021046Z"}}