{"id":"CVE-2026-78660","state":"PUBLISHED","title":"HTTP/2 transport accepts malformed framing-related headers in net/http","description":"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.","publishedAt":"2026-10-08T22:53:59.334Z","updatedAt":"2026-10-09T16:23:56.092Z","severity":{"score":7.5,"label":"High","version":"3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N","source":"CISA-ADP"},"assigner":"Go","products":["Go standard library net/http","Go standard library net/http/internal/http2","golang.org/x/net golang.org/x/net/http2"],"affected":[{"vendor":"Go standard library","product":"net/http","packageName":"net/http","defaultStatus":"unaffected","versions":[{"version":"0","status":"affected","lessThan":"1.26.9","versionType":"semver"}],"collectionURL":"https://pkg.go.dev","programRoutines":[{"name":"http2clientConnReadLoop.handleResponse"},{"name":"Client.CloseIdleConnections"},{"name":"Client.Do"},{"name":"Client.Get"},{"name":"Client.Head"},{"name":"Client.Post"},{"name":"Client.PostForm"},{"name":"ClientConn.Close"},{"name":"ClientConn.RoundTrip"},{"name":"Get"},{"name":"Head"},{"name":"Post"},{"name":"PostForm"},{"name":"Transport.CloseIdleConnections"},{"name":"Transport.NewClientConn"},{"name":"Transport.RoundTrip"},{"name":"http1ClientConn.Close"},{"name":"http1ClientConn.RoundTrip"},{"name":"http2Transport.NewClientConn"},{"name":"http2Transport.RoundTrip"},{"name":"http2Transport.RoundTripOpt"},{"name":"http2clientConnPool.GetClientConn"},{"name":"http2noDialClientConnPool.GetClientConn"},{"name":"http2noDialH2RoundTripper.NewClientConn"},{"name":"http2noDialH2RoundTripper.RoundTrip"},{"name":"http2unencryptedTransport.RoundTrip"}]},{"vendor":"Go standard library","product":"net/http/internal/http2","packageName":"net/http/internal/http2","defaultStatus":"unaffected","versions":[{"version":"1.27.0-0","status":"affected","lessThan":"1.27.2","versionType":"semver"}],"collectionURL":"https://pkg.go.dev","programRoutines":[{"name":"clientConnReadLoop.handleResponse"},{"name":"Transport.AddConn"},{"name":"Transport.NewClientConn"},{"name":"Transport.RoundTrip"},{"name":"Transport.RoundTripOpt"},{"name":"clientConnPool.GetClientConn"},{"name":"noDialClientConnPool.GetClientConn"}]},{"vendor":"golang.org/x/net","product":"golang.org/x/net/http2","packageName":"golang.org/x/net/http2","defaultStatus":"unaffected","versions":[{"version":"0","status":"affected","lessThan":"0.60.0","versionType":"semver"}],"collectionURL":"https://pkg.go.dev","programRoutines":[{"name":"clientConnReadLoop.handleResponse"},{"name":"Transport.NewClientConn"},{"name":"Transport.RoundTrip"},{"name":"Transport.RoundTripOpt"},{"name":"clientConnPool.GetClientConn"},{"name":"noDialClientConnPool.GetClientConn"},{"name":"noDialH2RoundTripper.NewClientConn"},{"name":"noDialH2RoundTripper.RoundTrip"},{"name":"unencryptedTransport.RoundTrip"}]}],"references":["https://go.dev/cl/835145","https://go.dev/cl/836385","https://go.dev/issue/81115","https://groups.google.com/g/golang-announce/c/U2fTuyDJznI","https://pkg.go.dev/vuln/GO-2026-6610"],"weaknesses":["CWE-444"],"ingestedAt":"2026-10-29T20:13:07.220Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/78xxx/CVE-2026-78660.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-78660","state":"PUBLISHED","datePublished":"2026-10-08T22:53:59.334Z","dateUpdated":"2026-10-09T16:23:56.092Z","assignerShortName":"Go","assignerOrgId":"1bb62c36-49e3-4200-9d77-64a1400537cc","dateReserved":"2026-08-24T23:36:15.738Z"},"containers":{"cna":{"title":"HTTP/2 transport accepts malformed framing-related headers in net/http","descriptions":[{"lang":"en","value":"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."}],"affected":[{"vendor":"Go standard library","product":"net/http","packageName":"net/http","defaultStatus":"unaffected","versions":[{"version":"0","status":"affected","lessThan":"1.26.9","versionType":"semver"}],"collectionURL":"https://pkg.go.dev","programRoutines":[{"name":"http2clientConnReadLoop.handleResponse"},{"name":"Client.CloseIdleConnections"},{"name":"Client.Do"},{"name":"Client.Get"},{"name":"Client.Head"},{"name":"Client.Post"},{"name":"Client.PostForm"},{"name":"ClientConn.Close"},{"name":"ClientConn.RoundTrip"},{"name":"Get"},{"name":"Head"},{"name":"Post"},{"name":"PostForm"},{"name":"Transport.CloseIdleConnections"},{"name":"Transport.NewClientConn"},{"name":"Transport.RoundTrip"},{"name":"http1ClientConn.Close"},{"name":"http1ClientConn.RoundTrip"},{"name":"http2Transport.NewClientConn"},{"name":"http2Transport.RoundTrip"},{"name":"http2Transport.RoundTripOpt"},{"name":"http2clientConnPool.GetClientConn"},{"name":"http2noDialClientConnPool.GetClientConn"},{"name":"http2noDialH2RoundTripper.NewClientConn"},{"name":"http2noDialH2RoundTripper.RoundTrip"},{"name":"http2unencryptedTransport.RoundTrip"}]},{"vendor":"Go standard library","product":"net/http/internal/http2","packageName":"net/http/internal/http2","defaultStatus":"unaffected","versions":[{"version":"1.27.0-0","status":"affected","lessThan":"1.27.2","versionType":"semver"}],"collectionURL":"https://pkg.go.dev","programRoutines":[{"name":"clientConnReadLoop.handleResponse"},{"name":"Transport.AddConn"},{"name":"Transport.NewClientConn"},{"name":"Transport.RoundTrip"},{"name":"Transport.RoundTripOpt"},{"name":"clientConnPool.GetClientConn"},{"name":"noDialClientConnPool.GetClientConn"}]},{"vendor":"golang.org/x/net","product":"golang.org/x/net/http2","packageName":"golang.org/x/net/http2","defaultStatus":"unaffected","versions":[{"version":"0","status":"affected","lessThan":"0.60.0","versionType":"semver"}],"collectionURL":"https://pkg.go.dev","programRoutines":[{"name":"clientConnReadLoop.handleResponse"},{"name":"Transport.NewClientConn"},{"name":"Transport.RoundTrip"},{"name":"Transport.RoundTripOpt"},{"name":"clientConnPool.GetClientConn"},{"name":"noDialClientConnPool.GetClientConn"},{"name":"noDialH2RoundTripper.NewClientConn"},{"name":"noDialH2RoundTripper.RoundTrip"},{"name":"unencryptedTransport.RoundTrip"}]}],"references":[{"url":"https://go.dev/cl/835145"},{"url":"https://go.dev/cl/836385"},{"url":"https://go.dev/issue/81115"},{"url":"https://groups.google.com/g/golang-announce/c/U2fTuyDJznI"},{"url":"https://pkg.go.dev/vuln/GO-2026-6610"}],"problemTypes":[{"descriptions":[{"lang":"en","description":"CWE-444: Inconsistent Interpretation of HTTP Requests ('HTTP Request/Response Smuggling')"}]}],"providerMetadata":{"shortName":"Go","orgId":"1bb62c36-49e3-4200-9d77-64a1400537cc","dateUpdated":"2026-10-08T22:53:59.334Z"},"credits":[{"lang":"en","value":"TJ Barton"}]},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"cvssV3_1":{"scope":"UNCHANGED","version":"3.1","baseScore":7.5,"attackVector":"NETWORK","baseSeverity":"HIGH","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N","integrityImpact":"HIGH","userInteraction":"NONE","attackComplexity":"LOW","availabilityImpact":"NONE","privilegesRequired":"NONE","confidentialityImpact":"NONE"}},{"other":{"type":"ssvc","content":{"timestamp":"2026-10-09T16:21:51.217328Z","id":"CVE-2026-78660","options":[{"Exploitation":"none"},{"Automatable":"yes"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-444","type":"CWE","lang":"en","description":"CWE-444 Inconsistent Interpretation of HTTP Requests ('HTTP Request/Response Smuggling')"}]}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-10-09T16:23:56.092Z"}}]}}}