{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-40575","assignerOrgId":"a0819718-46f1-4df5-94e2-005712e83aaa","state":"PUBLISHED","assignerShortName":"GitHub_M","dateReserved":"2026-04-14T13:24:29.475Z","datePublished":"2026-04-21T23:20:30.486Z","dateUpdated":"2026-07-15T01:00:45.240Z"},"containers":{"cna":{"title":"OAuth2 Proxy has an Authentication Bypass via X-Forwarded-Uri Header Spoofing","problemTypes":[{"descriptions":[{"cweId":"CWE-290","lang":"en","description":"CWE-290: Authentication Bypass by Spoofing","type":"CWE"}]}],"metrics":[{"cvssV3_1":{"attackComplexity":"LOW","attackVector":"NETWORK","availabilityImpact":"NONE","baseScore":9.1,"baseSeverity":"CRITICAL","confidentialityImpact":"HIGH","integrityImpact":"HIGH","privilegesRequired":"NONE","scope":"UNCHANGED","userInteraction":"NONE","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N","version":"3.1"}}],"references":[{"name":"https://github.com/oauth2-proxy/oauth2-proxy/security/advisories/GHSA-7x63-xv5r-3p2x","tags":["x_refsource_CONFIRM"],"url":"https://github.com/oauth2-proxy/oauth2-proxy/security/advisories/GHSA-7x63-xv5r-3p2x"}],"affected":[{"vendor":"oauth2-proxy","product":"oauth2-proxy","versions":[{"version":">= 7.5.0, < 7.15.2","status":"affected"}]}],"providerMetadata":{"orgId":"a0819718-46f1-4df5-94e2-005712e83aaa","shortName":"GitHub_M","dateUpdated":"2026-04-21T23:20:30.486Z"},"descriptions":[{"lang":"en","value":"OAuth2 Proxy is a reverse proxy that provides authentication using OAuth2 providers. Versions 7.5.0 through 7.15.1 may trust a client-supplied `X-Forwarded-Uri` header when `--reverse-proxy` is enabled and `--skip-auth-regex` or `--skip-auth-route` is configured. An attacker can spoof this header so OAuth2 Proxy evaluates authentication and skip-auth rules against a different path than the one actually sent to the upstream application. This can result in an unauthenticated remote attacker bypassing authentication and accessing protected routes without a valid session. Impacted users are deployments that run oauth2-proxy with `--reverse-proxy` enabled and configure at least one `--skip-auth-regex` or `--skip-auth-route` rule. This issue is patched in `v7.15.2`. Some workarounds are available for those who cannot upgrade immediately. Strip any client-provided `X-Forwarded-Uri` header at the reverse proxy or load balancer level; explicitly overwrite `X-Forwarded-Uri` with the actual request URI before forwarding requests to OAuth2 Proxy; restrict direct client access to OAuth2 Proxy so it can only be reached through a trusted reverse proxy; and/or remove or narrow `--skip-auth-regex` / `--skip-auth-route` rules where possible. For nginx-based deployments, ensure `X-Forwarded-Uri` is set by nginx and not passed through from the client."}],"source":{"advisory":"GHSA-7x63-xv5r-3p2x","discovery":"UNKNOWN"}},"adp":[{"metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2026-04-22T14:15:18.160877Z","id":"CVE-2026-40575","options":[{"Exploitation":"none"},{"Automatable":"yes"},{"Technical Impact":"total"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"title":"CISA ADP Vulnrichment","providerMetadata":{"orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","shortName":"CISA-ADP","dateUpdated":"2026-04-22T14:15:41.802Z"}},{"affected":[{"collectionURL":"https://access.redhat.com/downloads/content/package-browser/","cpes":["cpe:/a:redhat:ceph_storage:9"],"defaultStatus":"affected","packageName":"rhceph/oauth2-proxy-rhel9","product":"Red Hat Ceph Storage 9","vendor":"Red Hat"}],"datePublic":"2026-04-21T23:20:30.486Z","descriptions":[{"lang":"en","value":"A flaw was found in OAuth2 Proxy. When configured with `--reverse-proxy` and either `--skip-auth-regex` or `--skip-auth-route`, the proxy may trust a client-supplied `X-Forwarded-Uri` header. An unauthenticated remote attacker can exploit this by spoofing the header, leading to an authentication bypass. This allows unauthorized access to protected routes without a valid session."}],"metrics":[{"other":{"content":{"namespace":"https://access.redhat.com/security/updates/classification/","value":"Important"},"type":"Red Hat severity rating"}},{"cvssV3_1":{"attackComplexity":"HIGH","attackVector":"NETWORK","availabilityImpact":"NONE","baseScore":8.7,"baseSeverity":"HIGH","confidentialityImpact":"HIGH","integrityImpact":"HIGH","privilegesRequired":"NONE","scope":"CHANGED","userInteraction":"NONE","vectorString":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:N","version":"3.1"},"format":"CVSS"}],"problemTypes":[{"descriptions":[{"cweId":"CWE-290","description":"Authentication Bypass by Spoofing","lang":"en","type":"CWE"}]}],"references":[{"tags":["vdb-entry","x_refsource_REDHAT"],"url":"https://access.redhat.com/security/cve/CVE-2026-40575"},{"name":"RHBZ#2460449","tags":["issue-tracking","x_refsource_REDHAT"],"url":"https://bugzilla.redhat.com/show_bug.cgi?id=2460449"},{"tags":["x_sadp-csaf-vex"],"url":"https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-40575.json"}],"timeline":[{"lang":"en","time":"2026-04-22T00:01:48.616Z","value":"Reported to Red Hat."},{"lang":"en","time":"2026-04-21T23:20:30.486Z","value":"Made public."}],"title":"oauth2-proxy: github.com/oauth2-proxy/oauth2-proxy: OAuth2 Proxy: Authentication bypass due to spoofed X-Forwarded-Uri header","workarounds":[{"lang":"en","value":"This issue can be mitigated by one of the options bellow:\n\n1) Strip any client-provided `X-Forwarded-Uri` header at any layer before it reaches `oauth2-proxy`;\n2) Overwrite the `X-Forwarded-Uri` header with the actual request URI before the request reaches `oauth2-proxy`. If you are using NGINX you can use the following example to create your tailored mitigation:\n\n~~~\n  location /internal-auth/ {\n    internal; # Ensure external users can't access this path\n\n    # Make sure the OAuth2 Proxy knows where the original request came from.\n    proxy_set_header Host       $host;\n    proxy_set_header X-Real-IP  $remote_addr;\n    # set the value to the actual $request_uri and therefore strip any user provided X-Forwarded-Uri\n    proxy_set_header X-Forwarded-Uri $request_uri;\n\n    proxy_pass http://oauth2-proxy:4180/;\n  }\n~~~\n\n\n3) Restrict direct client access to OAuth2 Proxy so it can only be reached through a trusted reverse proxy;\n4) Remove or narrow --skip-auth-route / --skip-auth-regex rules where possible;"}],"x_adpType":"supplier","x_generator":{"engine":"sadp-cli 1.0.0"},"providerMetadata":{"orgId":"0b0ca135-0b70-47e7-9f44-1890c2a1c46c","shortName":"redhat-SADP","dateUpdated":"2026-07-15T01:00:45.240Z"}}]}}