Description
gRPC-Go is the Go language implementation of gRPC. Prior to 1.83.1, the xDS RBAC HTTP filter in internal/xds/httpfilter/rbac/rbac.go does not lowercase header matcher names in normalizeHeaderMatcher even though incoming metadata keys are lowercase. A DENY policy using a mixed-case name such as X-Role or User-Agent therefore does not match and fails open, allowing requests that should be rejected. The same case mismatch permits :Scheme or Grpc-Status to evade gRFC A41 validation and prevents Host from being rewritten to :authority. This issue is fixed in version 1.83.1.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
grpc grpc-go
< 1.83.1affected
References
- https://github.com/grpc/grpc-go/security/advisories/GHSA-qc2q-p7wx-3px3 ↗
- https://github.com/grpc/grpc-go/pull/9332 ↗
- https://github.com/grpc/grpc-go/pull/9335 ↗
- https://github.com/grpc/grpc-go/commit/db9482836c298f234c896cf82ab68cafc78237f8 ↗
- https://github.com/grpc/grpc-go/commit/ebba6f3f1b206e2b4dc4d1d5a96d18430302c2fe ↗
- https://github.com/grpc/grpc-go/releases/tag/v1.83.1 ↗