CVE-2025-64484: Github.com/oauth2 proxy/oauth2 proxy/v7 OAuth2-Proxy Is Vulnerable To Header Vulnerability
HIGHCVE-2025-64484 is a HIGH (CVSS 8.5) oauth2-proxy is vulnerable to header vulnerability (CWE-644: Improper Neutralization of HTTP Headers for Scripting Syntax) affecting Github.com/oauth2 proxy/oauth2 proxy/v7 libraries in the Go ecosystem. The issue involves oauth2-proxy is vulnerable to header smuggling via underscore leading to potential privilege escalation. Remediation is available by upgrading affected packages to version 7.13.0.
CVE-2025-64484 at a Glance
Security Impact
CVSS: 8.5
The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N).
How to Fix CVE-2025-64484
To remediate this vulnerability, upgrade all affected Github.com/oauth2 proxy/oauth2 proxy/v7 dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.
Upgrade github.com/oauth2-proxy/oauth2-proxy/v7 to 7.13.0
Run the following command in your project directory to verify that all resolved dependencies use the patched release:
inspect dependencies for github.com/oauth2-proxy/oauth2-proxy/v7
How to Check if You Are Affected
To determine whether your application is affected by CVE-2025-64484, inspect your project dependencies for Github.com/oauth2 proxy/oauth2 proxy/v7:
inspect dependencies for github.com/oauth2-proxy/oauth2-proxy/v7
Analyze the terminal output to locate any version of Github.com/oauth2 proxy/oauth2 proxy/v7 in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 7.13.0), your application is affected.
Note: Verify declared build manifests and deployed runtime container environments.
Technical Details
Vulnerability Mechanism & Technical Analysis
This vulnerability is classified under CWE-644: Improper Neutralization of HTTP Headers for Scripting Syntax, where the product does not neutralize or incorrectly neutralizes web scripting syntax in http headers that can be used by web browser components that can process raw headers, such as flash. In Github.com/oauth2 proxy/oauth2 proxy/v7, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.
Source Advisory Statement
CVE-2025-64484 Affected Github.com/oauth2 proxy/oauth2 proxy/v7 Versions
1 component(s)| Product / Package | Ecosystem | Affected Versions | Fixed Version |
|---|---|---|---|
|
github.com/oauth2-proxy/oauth2-proxy/v7
|
Go |
< 7.13.0
|
7.13.0
|
References
Frequently Asked Questions
What is CVE-2025-64484?
Which Github.com/oauth2 proxy/oauth2 proxy/v7 versions are affected?
What version fixes CVE-2025-64484?
Is github.com/oauth2-proxy/oauth2-proxy/v7 affected?
What is the CVSS score of CVE-2025-64484?
What CWE is associated with CVE-2025-64484?
How can I check Go dependencies for CVE-2025-64484?
Machine-readable OSV JSON
OSV v1.5 Schema
{
"schema_version" : "1.4.0",
"id" : "GHSA-vjrc-mh2v-45x6",
"modified" : "2025-11-17T21:48:56Z",
"published" : "2025-11-12T21:42:36Z",
"aliases" : [ "CVE-2025-64484" ],
"summary" : "OAuth2-Proxy is vulnerable to header smuggling via underscore leading to potential privilege escalation",
"details" : "### Impact\nAll deployments of OAuth2 Proxy in front of applications that normalize underscores to dashes in HTTP headers (e.g., WSGI-based frameworks such as Django, Flask, FastAPI, and PHP applications).\n\nAuthenticated users can inject underscore variants of X-Forwarded-* headers that bypass the proxy’s filtering logic, potentially escalating privileges in the upstream app. OAuth2 Proxy authentication/authorization itself is not compromised.\n\n### Patches\n\nThis change mitigates a request header smuggling vulnerability where an attacker could bypass header stripping by using different capitalization or replacing dashes with underscores. The problem has been patched with v7.13.0.\n\nBy default all specified headers will now be normalized, meaning that both capitalization and the use of underscores (_) versus dashes (-) will be ignored when matching headers to be stripped. For example, both `X-Forwarded-For` and `X_Forwarded-for` will now be treated as equivalent and stripped away.\n\nHowever, if users have a rationale for keeping a similar-looking header and don't want to strip it, a new configuration field for headers managed through AlphaConfig called InsecureSkipHeaderNormalization has been introduced :\n\n```golang\n// Header represents an individual header that will be added to a request or\n// response header.\ntype Header struct {\n\t// Name is the header name to be used for this set of values.\n\t// Names should be unique within a list of Headers.\n\tName string `json:\"name,omitempty\"`\n\n\t// PreserveRequestValue determines whether any values for this header\n\t// should be preserved for the request to the upstream server.\n\t// This option only applies to injected request headers.\n\t// Defaults to false (headers that match this header will be stripped).\n\tPreserveRequestValue bool `json:\"preserveRequestValue,omitempty\"`\n\n\t// InsecureSkipHeaderNormalization disables normalizing the header name\n\t// According to RFC 7230 Section 3.2 there aren't any rules about\n\t// capitalization of header names, but the standard practice is to use\n\t// Title-Case (e.g. X-Forwarded-For). By default, header names will be\n\t// normalized to Title-Case and any incoming headers that match will be\n\t// treated as the same header. Additionally underscores (_) in header names\n\t// will be converted to dashes (-) when normalizing.\n\t// Defaults to false (header names will be normalized).\n\tInsecureSkipHeaderNormalization bool `json:\"InsecureSkipHeaderNormalization,omitempty\"`\n\n\t// Values contains the desired values for this header\n\tValues []HeaderValue `json:\"values,omitempty\"`\n}\n```\n\n### Workarounds\nEnsure filtering and processing logic in upstream services don't treat underscores and hyphens in Headers the same way.",
"severity" : [ {
"type" : "CVSS_V3",
"score" : "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N"
} ],
"affected" : [ {
"package" : {
"ecosystem" : "Go",
"name" : "github.com/oauth2-proxy/oauth2-proxy/v7"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "0"
}, {
"fixed" : "7.13.0"
} ]
} ]
} ],
"references" : [ {
"type" : "WEB",
"url" : "https://github.com/oauth2-proxy/oauth2-proxy/security/advisories/GHSA-vjrc-mh2v-45x6"
}, {
"type" : "ADVISORY",
"url" : "https://nvd.nist.gov/vuln/detail/CVE-2025-64484"
}, {
"type" : "WEB",
"url" : "https://github.com/oauth2-proxy/oauth2-proxy/commit/f3f30fa976fb4bb97d6345ba4735cb6d86e24f95"
}, {
"type" : "WEB",
"url" : "https://datatracker.ietf.org/doc/html/rfc2616#section-4.2"
}, {
"type" : "WEB",
"url" : "https://datatracker.ietf.org/doc/html/rfc822#section-3.2"
}, {
"type" : "PACKAGE",
"url" : "https://github.com/oauth2-proxy/oauth2-proxy"
}, {
"type" : "WEB",
"url" : "https://github.com/oauth2-proxy/oauth2-proxy/releases/tag/v7.13.0"
}, {
"type" : "WEB",
"url" : "https://github.security.telekom.com/2020/05/smuggling-http-headers-through-reverse-proxies.html"
}, {
"type" : "WEB",
"url" : "https://www.uptimia.com/questions/why-are-http-headers-with-underscores-dropped-by-nginx"
} ],
"database_specific" : {
"cwe_ids" : [ "CWE-644" ],
"severity" : "HIGH",
"github_reviewed" : true,
"github_reviewed_at" : "2025-11-12T21:42:36Z",
"nvd_published_at" : "2025-11-10T22:15:37Z"
}
}