Go standard library net/http, net/http/internal/http2, and golang.org/x/net/http2 maintain connection-level and stream-level flow-control accounting for HTTP/2. When a client resets a stream, the server refunds connection-level flow-control credit for data that was sent but not read. If the request handler later reads the buffered data, the same data can be refunded again. This is a CWE-675 condition in which a resource is operated on multiple times in a context that expects a single operation.
Exploitation requires a malicious client to connect to an HTTP/2 server and create a case where a stream is reset while data remains buffered for the handler to read. The double refund can bypass MaxReceiveBufferPerConnection. Total buffered data remains limited by the concurrent stream limit and stream-level flow control, so the available evidence does not establish unbounded memory use. Go changed the behavior so that connection-level flow control for reset streams is refunded only after the request handler completes.