CVE-2026-84445
Nomad vulnerability analysis and mitigation

Overview

CVE-2026-84445 is a Denial of Service (DoS) vulnerability in gRPC-Go servers configured with xds.NewGRPCServer() that allows an attacker to crash the entire server process by sending a crafted HTTP/2 request missing both :authority and Host headers. The vulnerability was discovered by researcher winklemad and reported to Google's OSS VRP on August 23, 2026, before being publicly disclosed via GitHub on August 25, 2026, with the advisory published to the GitHub Advisory Database on September 8, 2026. Affected versions of google.golang.org/grpc (Go) include all releases before 1.82.2, versions 1.83.0 through 1.83.1, and 1.84.0-dev through 1.85.0-dev.0.20260825072537-93e31b48545e. The vulnerability is rated High severity by the GitHub Advisory Database (GitHub Advisory).

Technical details

The root cause is an improper validation of an array index (CWE-129) combined with an uncaught exception/panic (CWE-248) in the xDS routing interceptor (internal/xds/server/routing.go). The HTTP/2 server transport in gRPC-Go previously accepted requests lacking both :authority and Host headers; when such a request reached the xDS interceptor, the code called md.Get(":authority") and immediately accessed authority[0] without checking if the slice was empty, triggering a Go runtime index out of range panic. Because the per-RPC goroutine has no recover() call, this unhandled panic propagates and terminates the entire server process. Exploitation requires that the attacker first complete the transport-layer handshake (TLS/mTLS/ALTS) and HTTP/2 connection establishment before the crafted request reaches the vulnerable interceptor pipeline (GitHub Advisory, GitHub Issue #9354).

Impact

Successful exploitation causes a complete outage of the affected gRPC server — the entire server process terminates immediately upon receiving a single malicious request. On servers permitting insecure (plaintext) or standard TLS connections (where client certificates are not required), any unauthenticated remote attacker can trigger the crash. On servers enforcing mTLS or ALTS, an attacker must possess valid transport credentials, limiting the attack surface to authenticated principals. There is no evidence of confidentiality or integrity impact; the consequence is purely an availability loss (GitHub Advisory).

Exploitability

No public proof-of-concept exploit code or exploit kits have been identified for this vulnerability, and there is no evidence of in-the-wild exploitation as of the advisory publication date. The Feedly threat intelligence data lists no recorded exploitation events and no PoC entries. The CVE status is listed as "Reserved" and no EPSS score or CISA KEV catalog entry is currently available. The attack is straightforward in concept — sending a single malformed HTTP/2 request — making it low-complexity for any attacker who can reach the server's gRPC port (GitHub Advisory, Feedly).

Exploitation steps

  1. Reconnaissance: Identify gRPC-Go servers using xds.NewGRPCServer() that are network-accessible. Servers permitting plaintext or standard TLS connections are directly targetable without credentials.
  2. Establish transport connection: Complete the HTTP/2 connection handshake with the target server (including TLS negotiation if required). For mTLS-protected servers, valid client certificates must be obtained first.
  3. Craft malicious HTTP/2 request: Construct an HTTP/2 HEADERS frame that omits both the :authority pseudo-header and the Host header. A minimal frame would include only :method: POST, :path: /SomeService/SomeMethod, and content-type: application/grpc.
  4. Send the request: Transmit the crafted HEADERS frame to the server over the established HTTP/2 connection.
  5. Trigger server crash: The xDS routing interceptor attempts to access authority[0] on an empty slice, causing a Go runtime panic that terminates the entire server process, resulting in a complete DoS (GitHub Issue #9354, GitHub Advisory).

Indicators of compromise

  • Logs: Go runtime panic output in server logs containing panic: runtime error: index out of range [0] with length 0 with a stack trace referencing RouteAndProcess in internal/xds/server/routing.go and xdsUnaryInterceptor.
  • Logs: Sudden, unexpected server process termination with no graceful shutdown log entries.
  • Network: Inbound HTTP/2 HEADERS frames to the gRPC port that lack both :authority and Host headers; these can be identified via packet capture by inspecting HTTP/2 pseudo-headers on HEADERS frames.
  • Process: Abrupt exit of the gRPC server process (e.g., process restart events, systemd service failure notifications, container restarts) without a corresponding application-level error or shutdown signal (GitHub Issue #9354).

Mitigation and workarounds

Upgrade google.golang.org/grpc to one of the patched versions: 1.82.2, 1.83.2, or 1.85.0-dev.0.20260825072537-93e31b48545e (master). The fix updates internal/transport/http2_server.go to reject requests missing both :authority and Host headers early in the transport layer with HTTP 400 and gRPC status Internal, and adds a defensive bounds check in internal/xds/server/routing.go before accessing the authority slice. No configuration-based workaround is available for servers using xds.NewGRPCServer(); upgrading is the only reliable remediation. Enforcing mTLS at the network edge reduces the attack surface but does not eliminate the vulnerability for authenticated clients (GitHub Advisory, Patch Commit).

Additional resources


SourceThis report was generated using AI

Related Nomad vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-84304HIGH8.7
  • cAdvisor logocAdvisor
  • envoy-gateway-fips-1.8
NoYesSep 01, 2026
CVE-2026-14891HIGH8.7
  • Nomad logoNomad
  • cpe:2.3:a:hashicorp:nomad
NoYesJul 08, 2026
CVE-2026-14373HIGH7.7
  • Nomad logoNomad
  • cpe:2.3:a:hashicorp:nomad
NoYesJul 08, 2026
CVE-2026-14896MEDIUM4.2
  • Nomad logoNomad
  • cpe:2.3:a:hashicorp:nomad
NoYesJul 08, 2026
CVE-2026-84445HIGHN/A
  • Nomad logoNomad
  • terraform-docs
NoYesSep 08, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management