GitHub Advisoryadvisory · Go

GHSA-7rh7-c77v-6434 OAuth2-Proxy has authentication bypass in oauth2-proxy skip_auth_routes due to Query Parameter inclusion

CRITICAL Published 2025-07-30 Modified 2025-07-31 Official page ↗
Aliases
CVE-2025-54576
Ecosystem
Go
Packages
github.com/oauth2-proxy/oauth2-proxy/v7
Severity
Critical
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
Weaknesses
CWE-290
Reviewed
2025-07-30

Affected packages

• Go github.com/oauth2-proxy/oauth2-proxy/v7: < 7.11.0 → fixed in 7.11.0

Description

Impact This vulnerability affects oauth2-proxy deployments using the `skip_auth_routes` configuration option with regex patterns. The vulnerability allows attackers to bypass authentication by crafting URLs with query parameters that satisfy the configured regex patterns, potentially gaining unauthorized access to protected resources. The issue stems from `skip_auth_routes` matching against the full request URI (path + query parameters) instead of just the path as documented. This discrepancy enables authentication bypass attacks where attackers append malicious query parameters to access protected endpoints. Example Attack: • Configuration: `skip_auth_routes = [ "^/foo/.*/bar$" ]` • Intended behavior: Allow `/foo/something/bar` • Actual vulnerability: Also allows `/foo/critical_endpoint?param=/bar` Deployments using `skip_auth_routes` with regex patterns containing wildcards or broad matching patterns are most at risk, especially when backend services ignore unknown query parameters. Patches A patch has been released with version v7.11.0. Workarounds Immediate mitigations: 1. Review regex patterns: Audit all `skip_auth_routes` configurations for overly permissive patterns 2. Use precise patterns: Replace wildcard patterns with exact path matches where possible 3. Anchor patterns: Ensure regex patterns are properly anchored (start with `^` and end with `$`) 4. Path-only matching: Consider implementing custom validation that strips query parameters before regex matching Example secure configuration: ```toml Instead of: "^/public/.*" Use specific paths: "^/public/assets$", "^/public/health$" skip_auth_routes = ["^/public/assets$", "^/public/health$", "^/api/status$"] ```

Related

Alias · CVE (1)

  • CVE-2025-54576 OAuth2-Proxy is an open-source tool that can act as either a standalone reverse proxy or a middleware component integrated into existing… vulnerability

Weakness · CWE (1)

  • CWE-290 Authentication Bypass by Spoofing weakness

References