Go net/http and x/net/http2: Double flow control refund in HTTP/2 server
Summary
The HTTP/2 server in Go's net/http package and in golang.org/x/net/http2 refunds connection-level flow control twice for the same data, once when a client resets a stream and again when the handler reads the buffered data. A remote, unauthenticated client can exploit this to exceed the configured MaxReceiveBufferPerConnection limit. Total buffered data remains limited by the concurrent stream limit and stream-level flow control, so the impact is bounded but can still affect availability and integrity of Go-based HTTP/2 services.
Affected
- Go standard library net/http: before go1.26.9, and go1.27.0 before go1.27.2
- golang.org/x/net/http2: before v0.60.0
- Third-party software built with affected Go versions or x/net versions
Fixed in
- Go standard library: go1.26.9 and go1.27.2
- golang.org/x/net: v0.60.0 or newer
Workaround
- No vendor workaround documented. Upgrading is the only documented remedy.
- Restricting access to the HTTP/2 endpoint at a reverse proxy or firewall may reduce exposure, but no source confirms this as an effective mitigation.
Exploitation
- No evidence of active exploitation found.
- No public proof of concept found.
- CISA SSVC: Exploitation none, Automatable yes, Technical Impact total.
- EPSS score 0.00622 (Tenable).
Our recommendation
- Identify Go-built services, APIs and tools that serve HTTP/2, including third-party software and container images.
- Upgrade the Go toolchain to go1.26.9 or go1.27.2 and rebuild affected binaries.
- Upgrade golang.org/x/net to v0.60.0 or newer; check distribution packages, as some Debian and Ubuntu packages were still vulnerable at last check.
- Prioritise internet-facing services that terminate HTTP/2.
- Monitor for unusual connection and stream reset patterns until patching is complete.
Public exploits
PoC-in-GitHub, Metasploit and Exploit-DB list nothing for this CVE.
Research sources
- Go vulnerability database: GO-2026-6612 pkg.go.dev
- Go issue 81743 go.dev
- Go announcement: golang.org/x/net v0.60.0 security release groups.google.com
- Go issue 81743 on GitHub github.com
- Debian security tracker security-tracker.debian.org
- Ubuntu security notice ubuntu.com
- Tenable CVE page www.tenable.com
- OpsLevel terraform provider pull request 688 github.com
Researched and written up in English and German by an AI (Claude by Anthropic) based on NVD, CISA, EPSS and the sources listed. The vendor information is authoritative. Researched on 31 Oct 2026, 07:08.
Original description (NVD)
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.
Sources
The tracker combines official, freely usable data sources – updated continuously:
- NVD (NIST) – CVEs, rating (CVSS), affected products
- CISA KEV – vulnerabilities confirmed by CISA as actively exploited
- CISA Vulnrichment – CISA assessment (SSVC) in the official CVE record
- FIRST EPSS – probability of exploitation
- Microsoft MSRC – Patch Tuesday: vulnerabilities, severity, updates
- PoC-in-GitHub – public proof-of-concept repositories
- Metasploit (Rapid7) – modules of the Metasploit Framework
- Exploit-DB (OffSec) – archive of public exploits (links only)
- Patch days: official vendor pages (linked per vendor) (Vendor patch days)
This product uses data from the NVD API but is not endorsed or certified by the NVD. EPSS data © FIRST.org.
Affected? We can help.
We check whether your systems are affected, install updates and close the gap – continuously with the System Health Checker if you wish.
