ghsa-7rh7-c77v-6434
Vulnerability from github
Published
2025-07-30 19:41
Modified
2025-07-31 11:21
Severity ?
Summary
OAuth2-Proxy has authentication bypass in oauth2-proxy skip_auth_routes due to Query Parameter inclusion
Details

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$"] ```

Show details on source website


{
  "affected": [
    {
      "database_specific": {
        "last_known_affected_version_range": "\u003c= 7.10.0"
      },
      "package": {
        "ecosystem": "Go",
        "name": "github.com/oauth2-proxy/oauth2-proxy/v7"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "7.11.0"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    }
  ],
  "aliases": [
    "CVE-2025-54576"
  ],
  "database_specific": {
    "cwe_ids": [
      "CWE-290"
    ],
    "github_reviewed": true,
    "github_reviewed_at": "2025-07-30T19:41:07Z",
    "nvd_published_at": "2025-07-30T20:15:37Z",
    "severity": "CRITICAL"
  },
  "details": "### Impact\nThis 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.\n\nThe 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.\n\nExample Attack:\n\n* Configuration: `skip_auth_routes = [ \"^/foo/.*/bar$\" ]`\n* Intended behavior: Allow `/foo/something/bar`\n* Actual vulnerability: Also allows `/foo/critical_endpoint?param=/bar`\n\nDeployments 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.\n\n\n### Patches\nA patch has been released with version [v7.11.0](https://github.com/oauth2-proxy/oauth2-proxy/releases/tag/v7.11.0).\n\n### Workarounds\n\nImmediate mitigations:\n\n1. Review regex patterns: Audit all `skip_auth_routes` configurations for overly permissive patterns\n2. Use precise patterns: Replace wildcard patterns with exact path matches where possible\n3. Anchor patterns: Ensure regex patterns are properly anchored (start with `^` and end with `$`)\n4. Path-only matching: Consider implementing custom validation that strips query parameters before regex matching\n\nExample secure configuration:\n\n```toml\n# Instead of: \"^/public/.*\"\n# Use specific paths: \"^/public/assets$\", \"^/public/health$\"\nskip_auth_routes = [\"^/public/assets$\", \"^/public/health$\", \"^/api/status$\"]\n ```",
  "id": "GHSA-7rh7-c77v-6434",
  "modified": "2025-07-31T11:21:19Z",
  "published": "2025-07-30T19:41:07Z",
  "references": [
    {
      "type": "WEB",
      "url": "https://github.com/oauth2-proxy/oauth2-proxy/security/advisories/GHSA-7rh7-c77v-6434"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2025-54576"
    },
    {
      "type": "WEB",
      "url": "https://github.com/oauth2-proxy/oauth2-proxy/commit/9ffafad4b2d2f9f7668e5504565f356a7c047b77"
    },
    {
      "type": "PACKAGE",
      "url": "https://github.com/oauth2-proxy/oauth2-proxy"
    },
    {
      "type": "WEB",
      "url": "https://github.com/oauth2-proxy/oauth2-proxy/blob/f4b33b64bd66ad28e9b0d63bea51837b83c00ca1/oauthproxy.go#L582-L584"
    },
    {
      "type": "WEB",
      "url": "https://github.com/oauth2-proxy/oauth2-proxy/blob/f4b33b64bd66ad28e9b0d63bea51837b83c00ca1/pkg/requests/util/util.go#L37-L44"
    },
    {
      "type": "WEB",
      "url": "https://github.com/oauth2-proxy/oauth2-proxy/releases/tag/v7.11.0"
    },
    {
      "type": "WEB",
      "url": "https://oauth2-proxy.github.io/oauth2-proxy/configuration/overview/#proxy-options"
    }
  ],
  "schema_version": "1.4.0",
  "severity": [
    {
      "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N",
      "type": "CVSS_V3"
    }
  ],
  "summary": "OAuth2-Proxy has authentication bypass in oauth2-proxy skip_auth_routes due to Query Parameter inclusion"
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…