CVE-2021-21291
Subdomain checking of whitelisted domains could allow unintended redirects
OAuth2 Proxy is an open-source reverse proxy and static file server that provides authentication using Providers (Google, GitHub, and others) to validate accounts by email, domain or group. In OAuth2 Proxy before version 7.0.0, for users that use the whitelist domain feature, a domain that ended in a similar way to the intended domain could have been allowed as a redirect. For example, if a whitelist domain was configured for ".example.com", the intention is that subdomains of example.com are allowed. Instead, "example.com" and "badexample.com" could also match. This is fixed in version 7.0.0 onwards. As a workaround, one can disable the whitelist domain feature and run separate OAuth2 Proxy instances for each subdomain.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- High
- Privileges needed
- None
- User interaction
- Required
What an attacker can affect
- Confidentiality
- Low
- Integrity
- Low
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
4.7
Subdomain checking of whitelisted domains could allow unintended redirects
OAuth2 Proxy is an open-source reverse proxy and static file server that provides authentication using Providers (Google, GitHub, and others) to validate accounts by email, domain or group. In OAuth2 Proxy before version 7.0.0, for users that use the whitelist domain feature, a domain that ended in a similar way to the intended domain could have been allowed as a redirect. For example, if a whitelist domain was configured for ".example.com", the intention is that subdomains of example.com are allowed. Instead, "example.com" and "badexample.com" could also match. This is fixed in version 7.0.0 onwards. As a workaround, one can disable the whitelist domain feature and run separate OAuth2 Proxy instances for each subdomain.
- Record
CVE-2021-21291- CVSS 3.1
- 4.7 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:N - Weakness
- CWE-601
- Updated
- 2026-11-02
EUVDEUVD-2021-0944
4.7
OAuth2 Proxy is an open-source reverse proxy and static file server that provides authentication using Providers (Google, GitHub, and others) to validate accounts by email, domain or group. In OAuth2 Proxy before version 7.0.0, for users that use the whitelist domain feature, a domain that ended in a similar way to the intended domain could have been allowed as a redirect. For example, if a whitelist domain was configured for ".example.com", the intention is that subdomains of example.com are allowed. Instead, "example.com" and "badexample.com" could also match. This is fixed in version 7.0.0 onwards. As a workaround, one can disable the whitelist domain feature and run separate OAuth2 Proxy instances for each subdomain.
- Record
EUVD-2021-0944- CVSS 3.1
- 4.7 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:N - Updated
- 2026-11-03
GitHub AdvisoriesGHSA-4mf2-f3wh-gvf2
5.4
Subdomain checking of whitelisted domains could allow unintended redirects in oauth2-proxy
Impact
What kind of vulnerability is it? Who is impacted? For users that use the whitelist domain feature, a domain that ended in a similar way to the intended domain could have been allowed as a redirect.
For example, if a whitelist domain was configured for .example.com, the intention is that subdomains of example.com are allowed.
Instead, example.com and badexample.com could also match.
Patches
Has the problem been patched? What versions should users upgrade to? This is fixed in version 7.0.0 onwards.
Workarounds
Is there a way for users to fix or remediate the vulnerability without upgrading? Disable the whitelist domain feature and run separate OAuth2 Proxy instances for each subdomain.
Original Issue Posted by @semoac:
Whitelist Domain feature is not working as expected because is not matching a dot to ensure the redirect is a subdomain.
Expected Behavior
If whitelist domain is set to .example.com , then hack.alienexample.com should be rejected as a valid redirect.
Current Behavior
The code is removing the dot from .example.com and only checking if the redirect string end with example.com
Possible Solution
Include the dot when checking the string:
strings.HasSuffix(redirectHostname, "." + domainHostname)
Steps to Reproduce (for bugs)
package main
import (
"fmt"
"strings"
)
func validOptionalPort(port string) bool {
if port == "" || port == ":*" {
return true
}
if port[0] != ':' {
return false
}
for _, b := range port[1:] {
if b < '0' || b > '9' {
return false
}
}
return true
}
func splitHostPort(hostport string) (host, port string) {
host = hostport
colon := strings.LastIndexByte(host, ':')
if colon != -1 && validOptionalPort(host[colon:]) {
host, port = host[:colon], host[colon+1:]
}
if strings.HasPrefix(host, "[") && strings.HasSuffix(host, "]") {
host = host[1 : len(host)-1]
}
return
}
func main() {
domain := ".example.com"
domainHostname, _ := splitHostPort(strings.TrimLeft(domain, "."))
redirectHostname := "https://hack.alienexample.com"
if (strings.HasPrefix(domain, ".") && strings.HasSuffix(redirectHostname, domainHostname)) { fmt.Println("This should not have happen.")}
}
Users of github.com/oauth2-proxy/oauth2-proxy are advised to update to github.com/oauth2-proxy/oauth2-proxy/v7
- Record
GHSA-4mf2-f3wh-gvf2- CVSS 3.1
- 5.4 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N - Weakness
- CWE-601
- Updated
- 2026-11-02
NVD
4.7
OAuth2 Proxy is an open-source reverse proxy and static file server that provides authentication using Providers (Google, GitHub, and others) to validate accounts by email, domain or group. In OAuth2 Proxy before version 7.0.0, for users that use the whitelist domain feature, a domain that ended in a similar way to the intended domain could have been allowed as a redirect. For example, if a whitelist domain was configured for ".example.com", the intention is that subdomains of example.com are allowed. Instead, "example.com" and "badexample.com" could also match. This is fixed in version 7.0.0 onwards. As a workaround, one can disable the whitelist domain feature and run separate OAuth2 Proxy instances for each subdomain.
- Record
CVE-2021-21291- CVSS 3.1
- 4.7 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:N - CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - CVSS 2.0
- 5.8 Medium
AV:N/AC:M/Au:N/C:P/I:P/A:N - Weakness
- CWE-601
- Updated
- 2026-11-02
OSV
6.1
OAuth2 Proxy is an open-source reverse proxy and static file server that provides authentication using Providers (Google, GitHub, and others) to validate accounts by email, domain or group. In OAuth2 Proxy before version 7.0.0, for users that use the whitelist domain feature, a domain that ended in a similar way to the intended domain could have been allowed as a redirect. For example, if a whitelist domain was configured for ".example.com", the intention is that subdomains of example.com are allowed. Instead, "example.com" and "badexample.com" could also match. This is fixed in version 7.0.0 onwards. As a workaround, one can disable the whitelist domain feature and run separate OAuth2 Proxy instances for each subdomain.
- Record
CVE-2021-21291- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Updated
- 2026-11-02
OSVGHSA-4mf2-f3wh-gvf2
5.4
Subdomain checking of whitelisted domains could allow unintended redirects in oauth2-proxy
Impact
What kind of vulnerability is it? Who is impacted? For users that use the whitelist domain feature, a domain that ended in a similar way to the intended domain could have been allowed as a redirect.
For example, if a whitelist domain was configured for .example.com, the intention is that subdomains of example.com are allowed.
Instead, example.com and badexample.com could also match.
Patches
Has the problem been patched? What versions should users upgrade to? This is fixed in version 7.0.0 onwards.
Workarounds
Is there a way for users to fix or remediate the vulnerability without upgrading? Disable the whitelist domain feature and run separate OAuth2 Proxy instances for each subdomain.
Original Issue Posted by @semoac:
Whitelist Domain feature is not working as expected because is not matching a dot to ensure the redirect is a subdomain.
Expected Behavior
If whitelist domain is set to .example.com , then hack.alienexample.com should be rejected as a valid redirect.
Current Behavior
The code is removing the dot from .example.com and only checking if the redirect string end with example.com
Possible Solution
Include the dot when checking the string:
strings.HasSuffix(redirectHostname, "." + domainHostname)
Steps to Reproduce (for bugs)
package main
import (
"fmt"
"strings"
)
func validOptionalPort(port string) bool {
if port == "" || port == ":*" {
return true
}
if port[0] != ':' {
return false
}
for _, b := range port[1:] {
if b < '0' || b > '9' {
return false
}
}
return true
}
func splitHostPort(hostport string) (host, port string) {
host = hostport
colon := strings.LastIndexByte(host, ':')
if colon != -1 && validOptionalPort(host[colon:]) {
host, port = host[:colon], host[colon+1:]
}
if strings.HasPrefix(host, "[") && strings.HasSuffix(host, "]") {
host = host[1 : len(host)-1]
}
return
}
func main() {
domain := ".example.com"
domainHostname, _ := splitHostPort(strings.TrimLeft(domain, "."))
redirectHostname := "https://hack.alienexample.com"
if (strings.HasPrefix(domain, ".") && strings.HasSuffix(redirectHostname, domainHostname)) { fmt.Println("This should not have happen.")}
}
Users of github.com/oauth2-proxy/oauth2-proxy are advised to update to github.com/oauth2-proxy/oauth2-proxy/v7
- Record
GHSA-4mf2-f3wh-gvf2- CVSS 3.1
- 5.4 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N - Weakness
- CWE-601
- Updated
- 2026-11-02
OSVBIT-oauth2-proxy-2021-21291 No score
Subdomain checking of whitelisted domains could allow unintended redirects
OAuth2 Proxy is an open-source reverse proxy and static file server that provides authentication using Providers (Google, GitHub, and others) to validate accounts by email, domain or group. In OAuth2 Proxy before version 7.0.0, for users that use the whitelist domain feature, a domain that ended in a similar way to the intended domain could have been allowed as a redirect. For example, if a whitelist domain was configured for ".example.com", the intention is that subdomains of example.com are allowed. Instead, "example.com" and "badexample.com" could also match. This is fixed in version 7.0.0 onwards. As a workaround, one can disable the whitelist domain feature and run separate OAuth2 Proxy instances for each subdomain.
- Record
BIT-oauth2-proxy-2021-21291- Updated
- 2026-11-02
OSVGO-2022-0790 No score
Subdomain checking of whitelisted domains could allow unintended redirects in oauth2-proxy in github.com/oauth2-proxy/oauth2-proxy
Subdomain checking of whitelisted domains could allow unintended redirects in oauth2-proxy in github.com/oauth2-proxy/oauth2-proxy
- Record
GO-2022-0790- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
github.com/oauth2-proxy/oauth2-proxy/v7Go |
before 7.0.0 | 7.0.0 |
github.com/oauth2-proxy/oauth2-proxyGo |
through 3.2.0 | None known |
oauth2-proxyBitnami |
before 7.0.0 | 7.0.0 |
github.com/oauth2-proxy/oauth2-proxyGo |
All versions | None known |
History
| Recorded | Changed | Sources |
|---|---|---|
| aliases | EUVD | |
| first indexed | CVE List, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2021-21291 is a medium vulnerability (CVSS 4.7) in Oauth2 Proxy Project Proxy, published February 2, 2021. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 1.59%, the 75th percentile. Fixed in github.com/oauth2-proxy/oauth2-proxy/v7 7.0.0.
References
github.com/oauth2-proxy/oauth2-proxy/security/advisories/GHSA-4mf2-f3wh-gvf2
github.com/oauth2-proxy/oauth2-proxy/releases/tag/v7.0.0
pkg.go.dev/github.com/oauth2-proxy/oauth2-proxy/v7
github.com/oauth2-proxy/oauth2-proxy/commit/780ae4f3c99b579cb2ea9845121caebb6192f725
nvd.nist.gov/vuln/detail/CVE-2021-21291
github.com/advisories/GHSA-4mf2-f3wh-gvf2