{"id":"GHSA-qc2q-p7wx-3px3","summary":"gRPC-Go: xDS RBAC HTTP Filter bypass via mixed-case Header Matching and gRFC A41 validation evasion","details":"### Summary\nA vulnerability in the xDS RBAC HTTP filter implementation in grpc-go allows remote attackers to bypass authorization policies (specifically DENY rules) by using mixed-case or canonical-case header matchers (e.g., X-Role instead of x-role). Additionally, the safety guards introduced by gRFC A41 to block grpc- prefixed headers can be evaded via variations in casing (e.g., Grpc-Status).\n\n### Impact\nWhen an operator defines an RBAC policy referencing headers containing uppercase letters (e.g. X-Role), grpc-go fails to match incoming metadata keys because they are unconditionally lowercased. Because of this case-sensitivity mismatch, a policy designed to block requests containing specific header values fails open: the rule is evaluated as a non-match, and traffic that should have been rejected is served.\n\nFurthermore, gRFC A41 requires rejecting configuration schemas specifying header matchers starting with grpc-. Because this check is executed case-sensitively in grpc-go, attackers can bypass the validation by specifying titles like Grpc-Status.\n\n### Patches\nThe problem is fixed in `master` and in the 1.83.1 release.","aliases":["CVE-2026-84303","GO-2026-6441"],"modified":"2026-09-15T19:10:25.583480059Z","published":"2026-09-08T20:50:21Z","database_specific":{"severity":"MODERATE","github_reviewed":true,"github_reviewed_at":"2026-09-08T20:50:21Z","nvd_published_at":"2026-09-01T19:17:30Z","cwe_ids":["CWE-178","CWE-863"]},"references":[{"type":"WEB","url":"https://github.com/grpc/grpc-go/security/advisories/GHSA-qc2q-p7wx-3px3"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-84303"},{"type":"WEB","url":"https://github.com/grpc/grpc-go/pull/9332"},{"type":"WEB","url":"https://github.com/grpc/grpc-go/pull/9335"},{"type":"WEB","url":"https://github.com/grpc/grpc-go/commit/db9482836c298f234c896cf82ab68cafc78237f8"},{"type":"WEB","url":"https://github.com/grpc/grpc-go/commit/ebba6f3f1b206e2b4dc4d1d5a96d18430302c2fe"},{"type":"PACKAGE","url":"https://github.com/grpc/grpc-go"},{"type":"WEB","url":"https://github.com/grpc/grpc-go/releases/tag/v1.83.1"}],"affected":[{"package":{"name":"google.golang.org/grpc","ecosystem":"Go","purl":"pkg:golang/google.golang.org/grpc"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"1.83.1"}]}],"database_specific":{"last_known_affected_version_range":"\u003c= 1.83.0","source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/09/GHSA-qc2q-p7wx-3px3/GHSA-qc2q-p7wx-3px3.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V4","score":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N"}]}