{"id":"CVE-2026-84304","summary":"gRPC-Go: Heap Memory Exhaustion (OOM) via HTTP/2 DATA Frame Fragmentation","details":"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.","aliases":["GHSA-vp52-pcj8-j9qc"],"modified":"2026-09-03T04:10:49.814913183Z","published":"2026-09-01T18:19:10.100Z","related":["CGA-j4fx-vj29-fw4v"],"database_specific":{"cna_assigner":"GitHub_M","cwe_ids":["CWE-400"],"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/84xxx/CVE-2026-84304.json"},"references":[{"type":"WEB","url":"https://github.com/grpc/grpc-go/releases/tag/v1.83.1"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/84xxx/CVE-2026-84304.json"},{"type":"ADVISORY","url":"https://github.com/grpc/grpc-go/security/advisories/GHSA-vp52-pcj8-j9qc"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-84304"},{"type":"FIX","url":"https://github.com/grpc/grpc-go/commit/7354d9c8debb4bcf2225bf429857078de310c176"},{"type":"FIX","url":"https://github.com/grpc/grpc-go/commit/8cfeca0e1ee5ea0980dcc320e20240fa1079ec77"},{"type":"FIX","url":"https://github.com/grpc/grpc-go/pull/9331"},{"type":"FIX","url":"https://github.com/grpc/grpc-go/pull/9333"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/grpc/grpc-go","events":[{"introduced":"0"},{"fixed":"7354d9c8debb4bcf2225bf429857078de310c176"},{"fixed":"8cfeca0e1ee5ea0980dcc320e20240fa1079ec77"},{"fixed":"1550d9e0cddb30ce99e61a2102e8294a49461e5e"}],"database_specific":{"extracted_events":[{"introduced":"0"},{"fixed":"1.83.1"}],"source":["AFFECTED_FIELD","REFERENCES"]}}],"versions":["v1.85.0-dev","v1.83.0","v1.84.0-dev","v1.83.0-dev","cmd/protoc-gen-go-grpc/v1.6.2","v1.82.0-dev","v1.81.0-dev","cmd/protoc-gen-go-grpc/v1.6.1","v1.80.0-dev","v1.79.0-dev","cmd/protoc-gen-go-grpc/v1.6.0","v1.78.0-dev","v1.77.0-dev","v1.76.0-dev","v1.75.0-dev","v1.74.0-dev","v1.73.0-dev","v1.72.0-dev","1.69.3","v1.71.0-dev","v1.69.0","v1.70.0-dev","v1.69.0-dev","v1.68.0-dev","v1.67.0-dev","cmd/protoc-gen-go-grpc/v1.5.1","cmd/protoc-gen-go-grpc/v1.5.0","security/advancedtls/v1.0.0","v1.66.0-dev","cmd/protoc-gen-go-grpc/v1.4.0","v1.65.0-dev","gcp/observability/v1.0.1","v1.61.0-dev","v1.60.0-dev","v1.59.0-dev","v1.58.0-dev","v1.57.0-dev","v1.56.0-dev","gcp/observability/v1.0.0","stats/opencensus/v1.0.0","v1.55.0-dev","cmd/protoc-gen-go-grpc/v1.3.0","v1.53.0-dev","v1.52.0-dev","v1.51.0-dev","v1.50.0-dev","v1.49.0-dev","v1.48.0-dev","v1.47.0-dev","v1.46.0-dev","v1.45.0-dev","cmd/protoc-gen-go-grpc/v1.2.0","v1.44.0-dev","v1.43.0-dev","v1.42.0-dev","v1.41.0-dev","v1.40.0-dev","v1.39.0-dev","v1.38.0-dev","v1.37.0-dev","cmd/protoc-gen-go-grpc/v1.1.0","v1.36.0-dev","v1.35.0-dev","cmd/protoc-gen-go-grpc/v1.0.1","v1.34.0-dev","cmd/protoc-gen-go-grpc/v1.0.0","v1.33.0-dev","v1.32.0-dev","v1.31.0-dev","v1.30.0-dev.1","v1.30.0-dev","v1.29.0-dev","v1.28.0-pre","v1.27.0-pre","v1.2.0","v1.0.5","v1.0.4","v1.0.3","v1.0.2","v1.0.1-GA","v1.0.0"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-84304.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V4","score":"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"}]}