{"id":"GO-2026-6610","summary":"HTTP/2 transport accepts malformed framing-related headers in net/http","details":"Historically, we have been rather lax about malformed framing-related headers in our HTTP/2 implementation, as they cannot interfere with HTTP/2 framing. However, this makes it possible for our HTTP/2 implementation to forward responses containing such headers to an HTTP/1 client when acting as a reverse proxy. If the HTTP/1 client also does not behave strictly enough, this can result in response smuggling.","aliases":["CVE-2026-78660"],"modified":"2026-10-08T23:00:13.120370808Z","published":"2026-10-08T22:31:09Z","database_specific":{"url":"https://pkg.go.dev/vuln/GO-2026-6610","review_status":"REVIEWED"},"references":[{"type":"FIX","url":"https://go.dev/cl/835145"},{"type":"FIX","url":"https://go.dev/cl/836385"},{"type":"REPORT","url":"https://go.dev/issue/81115"},{"type":"WEB","url":"https://groups.google.com/g/golang-announce/c/U2fTuyDJznI"}],"affected":[{"package":{"name":"stdlib","ecosystem":"Go","purl":"pkg:golang/stdlib"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"1.26.9"}]}],"ecosystem_specific":{"imports":[{"path":"net/http","symbols":["Client.CloseIdleConnections","Client.Do","Client.Get","Client.Head","Client.Post","Client.PostForm","ClientConn.Close","ClientConn.RoundTrip","Get","Head","Post","PostForm","Transport.CloseIdleConnections","Transport.NewClientConn","Transport.RoundTrip","http1ClientConn.Close","http1ClientConn.RoundTrip","http2Transport.NewClientConn","http2Transport.RoundTrip","http2Transport.RoundTripOpt","http2clientConnPool.GetClientConn","http2clientConnReadLoop.handleResponse","http2noDialClientConnPool.GetClientConn","http2noDialH2RoundTripper.NewClientConn","http2noDialH2RoundTripper.RoundTrip","http2unencryptedTransport.RoundTrip"]}]},"database_specific":{"source":"https://vuln.go.dev/ID/GO-2026-6610.json"}},{"package":{"name":"stdlib","ecosystem":"Go","purl":"pkg:golang/stdlib"},"ranges":[{"type":"SEMVER","events":[{"introduced":"1.27.0-0"},{"fixed":"1.27.2"}]}],"ecosystem_specific":{"imports":[{"path":"net/http/internal/http2","symbols":["Transport.AddConn","Transport.NewClientConn","Transport.RoundTrip","Transport.RoundTripOpt","clientConnPool.GetClientConn","clientConnReadLoop.handleResponse","noDialClientConnPool.GetClientConn"]}]},"database_specific":{"source":"https://vuln.go.dev/ID/GO-2026-6610.json"}},{"package":{"name":"golang.org/x/net","ecosystem":"Go","purl":"pkg:golang/golang.org/x/net"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"0.60.0"}]}],"ecosystem_specific":{"imports":[{"path":"golang.org/x/net/http2","symbols":["Transport.NewClientConn","Transport.RoundTrip","Transport.RoundTripOpt","clientConnPool.GetClientConn","clientConnReadLoop.handleResponse","noDialClientConnPool.GetClientConn","noDialH2RoundTripper.NewClientConn","noDialH2RoundTripper.RoundTrip","unencryptedTransport.RoundTrip"]}]},"database_specific":{"source":"https://vuln.go.dev/ID/GO-2026-6610.json"}}],"schema_version":"1.9.0","credits":[{"name":"TJ Barton"}]}