Go HTTP/2 CVE-2026-78663
CRITICALAttack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessEstablish HTTP/2 connection to server
-
DeliverySend partial data on streams
-
ExploitReset streams before handler reads
-
ExecutionTrigger duplicate flow-control refund
-
ImpactExceed per-connection buffer limit
Vulnerability Assessment
| Weakness |
CWE
|
| Exploitation Conditions | Exploitation requires the target to run Go's HTTP/2 server (net/http with h2, or golang.org/x/net/http2) with connection-level flow control active via MaxReceiveBufferPerConnection - the exact setting the bug defeats. The attacker must be able to open HTTP/2 streams, send data, and reset streams before the request handler reads the buffered bytes, which is the specific condition that produces the double refund. No authentication or user interaction is needed (PR:N/UI:N). Practical impact is LIMITED because the description states total buffered data is still bounded by the concurrent stream limit and stream-level flow control, so the bypass cannot grow memory usage without limit; servers not using HTTP/2 are unaffected. |
| Impact | Signals conflict and must be weighed carefully. The published CVSS of 9.1 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H) reflects a remotely reachable, low-complexity, unauthenticated flaw, and CISA SSVC rates it Automatable=yes with Technical Impact=total - both of which argue for prompt attention. However, EPSS is only 0.25% (15th percentile), there is no CISA KEV listing (SSVC Exploitation=none) and no public exploit identified, so there is no evidence of real-world weaponization. More importantly, the description itself constrains the impact: the double flow-control refund lets a client bypass the per-connection MaxReceiveBufferPerConnection limit, but 'total buffered data is still limited by the concurrent stream limit and stream-level flow control,' which caps the achievable resource abuse. This tension - a 9.1 'high integrity/high availability' vector versus a description that reads as a bounded resource-accounting bug (CWE-675, duplicate operations on a resource) - suggests the headline score likely overstates the practical impact. Net assessment: a legitimate bug worth patching in the normal cycle given how broadly Go's HTTP/2 stack is deployed, but not an emergency; the I:H and A:H designations are not well supported by the vendor's own bounding language and should be verified. |
| Exploit ScenarioDerived | A remote attacker opens an HTTP/2 connection to a Go-based server, sends data on multiple streams, and resets each stream before the handler reads the buffered bytes, causing the server to credit connection-level flow control twice for the same data. Repeating this lets the client send more in-flight data than the configured MaxReceiveBufferPerConnection should allow, driving excess memory buffering per connection. No public exploit code has been identified, and realistic impact is capped by the concurrent-stream and stream-level flow-control limits. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 09, 2026
Signals conflict: the original CVSS rates integrity and availability impact as high (9.1), but independent assessment determines only low availability impact. A logic error in Go's HTTP/2 server allows unauthenticated remote attackers to bypass the configured connection-level flow control limit (MaxReceiveBufferPerConnection) by resetting streams to trigger a double refund of flow control credit. The practical impact is limited because total buffered data remains bounded by concurrent stream limits and stream-level flow control; no public exploit identified at time of analysis, and patches are available as upstream commits.
RemediationAI
Patch availability: vendor advisory confirms a fix, with upstream commits at go.dev/cl/847187 and go.dev/cl/847310 (issue 81743); released patched version not independently confirmed from provided data. Apply the next Go patch release or update golang.org/x/net to the fixed version as soon as available. As a workaround, if HTTP/2 is not required, disable HTTP/2 on the server (for example, by setting TLSNextProto to an empty map in net/http) to eliminate exposure; trade-off is loss of HTTP/2 performance benefits. Additionally, restricting the number of concurrent streams and keeping MaxReceiveBufferPerConnection conservatively low can further bound memory usage, though the bug specifically defeats that limit. Consult the Go vulnerability database entry and vendor advisory links for definitive patching guidance.
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in go
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
HTTP/2 implements flow control at both the stream and connection levels. In Go's net/http HTTP/2 server (and the golang.org/x/net/http2 package), a logic error (CWE-675: Duplicate Operations on Resource) causes connection-level flow control credit to be refunded twice for the same data: once when a client resets a stream (refunding any sent-but-unread portion), and again when the request handler reads the buffered bytes. This double refund effectively increases the connection-level window beyond the configured MaxReceiveBufferPerConnection, allowing a malicious client to send more data than intended. The affected components are identified by CPEs cpe:2.3:a:go_standard_library:net/http, cpe:2.3:a:go_standard_library:net/http/internal/http2, and cpe:2.3:a:golang.org/x/net:golang.org/x/net/http2. The bypass does not remove all bounds: total buffered data is still limited by the concurrent stream limit and per-stream flow control, so memory exhaustion is not unbounded.
Know when Golang Org X Net Http2 gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H
Remote, low-complexity, unauthenticated (AV:N/AC:L/PR:N/UI:N), but a bounded flow-control accounting bug with no confidentiality or integrity effect and only partial availability pressure (A:L), since buffering stays capped.
Primary rating from Vendor (Go).
CVSS VectorVendor: Go
Lifecycle Timeline
3DescriptionCVE.org
The HTTP/2 server can refund connection-level flow control twice for the same data: Once when a client resets a stream (refunding data for any sent-but-unread portion of the stream), and again when a request handler reads the buffered data. A malicious client can exploit this to bypass the configured connection-level flow control limit (MaxReceiveBufferPerConnection). Total buffered data is still limited by the concurrent stream limit and stream-level flow control.
Executive ViewAI
Go's HTTP/2 server implementation contains a logic error that could allow remote attackers to bypass connection-level flow control limits, potentially leading to resource exhaustion and degraded availability for Go-based services. Although no public exploit identified at time of analysis, the critical severity rating and widespread use of Go in production environments make this a priority for remediation. Leadership should ensure that affected applications are patched promptly to mitigate any potential operational disruption.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Affected Products (CPE)CVE.org
More in Golang Org X Net Http2
View allRemote denial of service in Go's HTTP/2 stack (both golang.org/x/net/http2 and the net/http standard library) allows an
Response smuggling is possible in Go's HTTP/2 implementation (net/http and golang.org/x/net/http2) when a program acts a
NVD
CVE.org
EPSS
Vulnrichment
VulDB
GitHub PoC
Exploit-DB