ZeroHour

CVE-2026-84304

mass

Unauthenticated Memory-Exhaustion DoS in gRPC-Go HTTP/2 DATA Frame Handling

CVSS 4.0
8.7 high
EPSS
<1%p35
Published
()
Modified
AI analysis

gRPC-Go before 1.83.1 stores every fragmented HTTP/2 DATA frame as a separate recvMsg in its receive buffer, so millions of tiny (e.g., one-byte) frames can inflate the process heap far beyond the actual payload size even while staying within connection and stream flow-control windows. An unauthenticated remote attacker triggers this by opening concurrent multiplexed streams and sending such fragmented DATA frames to any gRPC service built with an affected version. The outcome is uncontrolled resource consumption (CWE-400) culminating in a Go runtime panic or out-of-memory process termination, i.e., a denial of service with no confidentiality or integrity impact per the CVSS 4.0 score of 8.7. Anyone running a gRPC server implemented with gRPC-Go, including as a transitive dependency of Go services, that accepts traffic from untrusted network clients is affected. Exploitation has not been observed: there is no public proof-of-concept, the issue is not in CISA KEV, and EPSS estimates only a 0.4% probability of exploitation within 30 days.

What to do: Upgrade gRPC-Go to 1.83.1 or later and rebuild and redeploy affected Go services. If upgrading is delayed, verify receive-buffer compaction has not been disabled (it is enabled by default and toggled via GRPC_GO_EXPERIMENTAL_ENABLE_RECEIVE_BUFFER_COMPACTION where available), and restrict or rate-limit unauthenticated network access to gRPC endpoints. Audit go.mod and dependency trees for gRPC-Go versions below 1.83.1, since the library is frequently pulled in transitively.

Affected
gRPC (Google) gRPC-GoAll versions prior to 1.83.1 (fixed in 1.83.1)
Estimated exposure
massMillions of Go service deployments include gRPC-Go; plausibly well over 100,000 gRPC servers are reachable from untrusted networks — gRPC-Go is among the most widely used Go modules (millions of dependent modules and weekly downloads) and serves as the transport in ubiquitous Go infrastructure such as etcd, containerd, and countless gRPC microservice APIs, so the…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

gRPC-Go is the Go language implementation of gRPC. Prior to 1.83.1, internal/transport/transport.go stores each fragmented HTTP/2 DATA frame as a separate recvMsg in recvBuffer, so millions of one-byte frames can consume disproportionate heap memory even when payload bytes remain within connection and stream flow-control windows. An unauthenticated remote attacker can use concurrent multiplexed streams to exhaust process memory and cause a runtime panic or out-of-memory termination. Receive-buffer compaction is enabled by default and can be controlled temporarily with GRPC_GO_EXPERIMENTAL_ENABLE_RECEIVE_BUFFER_COMPACTION. This issue is fixed in version 1.83.1.

Weakness
CWE-400
Vector
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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X

In the news

No ingested article mentions this CVE yet.