Summary
CVE-2026-84445 is a denial-of-service vulnerability in grpc-go, the Go implementation of gRPC, affecting servers created with xds.NewGRPCServer(). A crafted request that omits both the :authority and Host headers triggers an index-out-of-bounds panic in the xDS routing interceptor, which is not recovered by the per-RPC goroutine and crashes the entire server process. The issue carries a CVSS score of 8.7 (High) and is remotely exploitable over the network.
Technical details
- Root cause: Servers built with
xds.NewGRPCServer()install an xDS routing interceptor on every RPC that looks up the request’s:authorityheader to select a virtual host. The HTTP/2 transport previously accepted requests lacking both:authorityandHostheaders, so the interceptor attempted to read the first element of an empty "authorities" slice, causing an index-out-of-bounds panic (CWE-129: Improper Validation of Array Index). - Uncaught exception: The per-RPC goroutine does not recover from this panic (CWE-248: Uncaught Exception), so the panic propagates and terminates the entire gRPC-Go server process rather than just the affected connection/RPC.
- Trigger conditions: The target server must be configured with the xDS server API (
xds.NewGRPCServer()); plaingrpc.NewServer()deployments that do not register the xDS routing interceptor are not affected. - Attack vector: An attacker sends a crafted HTTP/2 request that omits both the
:authoritypseudo-header and theHostheader. The transport-layer handshake (TLS, mTLS, or ALTS) must complete successfully before the request can reach the vulnerable routing logic — on insecure or standard-TLS deployments this requires no authentication, while mTLS/ALTS deployments require the attacker to already hold valid transport credentials. - Impact: Full denial of service — the crash affects the entire server process, not just a single connection, dropping all in-flight and future RPCs until the process is restarted.
Affected software
- google.golang.org/grpc (grpc-go): versions prior to 1.82.2, and versions 1.83.0 up to (and including) 1.83.1, when the xDS server API (
xds.NewGRPCServer()) is used.
Severity
- CVSS Score: 8.7 (High)
- CVSS Vector (v4.0):
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Network attack vector, low attack complexity, no privileges or user interaction required; impact is limited to availability (High), with no confidentiality or integrity impact.
Mitigation and recommended actions
- Immediate: Upgrade grpc-go to version 1.82.2 (for the 1.82.x branch) or 1.83.2 (for the 1.83.x branch), both of which reject requests missing both
:authorityandHostheaders early in the HTTP/2 transport layer, consistent with other gRPC implementations. - If immediate patching isn’t possible: There are no documented workarounds; teams using
xds.NewGRPCServer()should restrict network exposure of xDS-enabled gRPC endpoints (e.g., via network segmentation, mTLS/ALTS enforcement, or firewall rules limiting access to trusted clients) until the upgrade can be applied, and should monitor for unexpected server process restarts/crashes as a possible indicator of exploitation attempts. - Review dependency manifests and container images for transitive use of
google.golang.org/grpcin services that configure xDS-based gRPC servers, since the vulnerability has driven dependency updates across many downstream Go projects.

