| { |
| "dataType": "CVE_RECORD", |
| "dataVersion": "5.0", |
| "cveMetadata": { |
| "cveId": "CVE-2026-94439" |
| }, |
| "containers": { |
| "cna": { |
| "providerMetadata": { |
| "orgId": "1bb62c36-49e3-4200-9d77-64a1400537cc" |
| }, |
| "title": "HTTP/1 server connection desynchronization after 2xx CONNECT response in net/http", |
| "descriptions": [ |
| { |
| "lang": "en", |
| "value": "When an HTTP server handler sends a 2xx response to an HTTP/1 CONNECT request and returns without hijacking the connection, the server improperly continues to read and serve requests from the connection. Since a 2xx response to an HTTP/1 CONNECT converts the connection into a tunnel, the server should not treat the connection as continuing to contain HTTP. The impact of this misbehavior is mostly limited to potential request smuggling, where an intermediate proxy considers the data on the connection to be tunneled and the server considers it to be HTTP." |
| } |
| ], |
| "affected": [ |
| { |
| "vendor": "Go standard library", |
| "product": "net/http", |
| "collectionURL": "https://pkg.go.dev", |
| "packageName": "net/http", |
| "versions": [ |
| { |
| "version": "0", |
| "lessThan": "1.26.9", |
| "status": "affected", |
| "versionType": "semver" |
| }, |
| { |
| "version": "1.27.0-0", |
| "lessThan": "1.27.2", |
| "status": "affected", |
| "versionType": "semver" |
| } |
| ], |
| "programRoutines": [ |
| { |
| "name": "chunkWriter.writeHeader" |
| }, |
| { |
| "name": "CanonicalHeaderKey" |
| }, |
| { |
| "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": "Cookie.String" |
| }, |
| { |
| "name": "Cookie.Valid" |
| }, |
| { |
| "name": "CrossOriginProtection.AddInsecureBypassPattern" |
| }, |
| { |
| "name": "CrossOriginProtection.AddTrustedOrigin" |
| }, |
| { |
| "name": "CrossOriginProtection.Check" |
| }, |
| { |
| "name": "Dir.Open" |
| }, |
| { |
| "name": "Error" |
| }, |
| { |
| "name": "Get" |
| }, |
| { |
| "name": "Handle" |
| }, |
| { |
| "name": "HandleFunc" |
| }, |
| { |
| "name": "HandlerFunc.ServeHTTP" |
| }, |
| { |
| "name": "Head" |
| }, |
| { |
| "name": "Header.Add" |
| }, |
| { |
| "name": "Header.Del" |
| }, |
| { |
| "name": "Header.Get" |
| }, |
| { |
| "name": "Header.Set" |
| }, |
| { |
| "name": "Header.Values" |
| }, |
| { |
| "name": "Header.Write" |
| }, |
| { |
| "name": "Header.WriteSubset" |
| }, |
| { |
| "name": "ListenAndServe" |
| }, |
| { |
| "name": "ListenAndServeTLS" |
| }, |
| { |
| "name": "NewRequest" |
| }, |
| { |
| "name": "NewRequestWithContext" |
| }, |
| { |
| "name": "NotFound" |
| }, |
| { |
| "name": "ParseCookie" |
| }, |
| { |
| "name": "ParseSetCookie" |
| }, |
| { |
| "name": "ParseTime" |
| }, |
| { |
| "name": "Post" |
| }, |
| { |
| "name": "PostForm" |
| }, |
| { |
| "name": "ProxyFromEnvironment" |
| }, |
| { |
| "name": "ReadRequest" |
| }, |
| { |
| "name": "ReadResponse" |
| }, |
| { |
| "name": "Redirect" |
| }, |
| { |
| "name": "Request.AddCookie" |
| }, |
| { |
| "name": "Request.BasicAuth" |
| }, |
| { |
| "name": "Request.Cookie" |
| }, |
| { |
| "name": "Request.Cookies" |
| }, |
| { |
| "name": "Request.CookiesNamed" |
| }, |
| { |
| "name": "Request.FormFile" |
| }, |
| { |
| "name": "Request.FormValue" |
| }, |
| { |
| "name": "Request.MultipartReader" |
| }, |
| { |
| "name": "Request.ParseForm" |
| }, |
| { |
| "name": "Request.ParseMultipartForm" |
| }, |
| { |
| "name": "Request.PostFormValue" |
| }, |
| { |
| "name": "Request.Referer" |
| }, |
| { |
| "name": "Request.SetBasicAuth" |
| }, |
| { |
| "name": "Request.UserAgent" |
| }, |
| { |
| "name": "Request.Write" |
| }, |
| { |
| "name": "Request.WriteProxy" |
| }, |
| { |
| "name": "Response.Cookies" |
| }, |
| { |
| "name": "Response.Location" |
| }, |
| { |
| "name": "Response.Write" |
| }, |
| { |
| "name": "ResponseController.EnableFullDuplex" |
| }, |
| { |
| "name": "ResponseController.Flush" |
| }, |
| { |
| "name": "ResponseController.Hijack" |
| }, |
| { |
| "name": "ResponseController.SetReadDeadline" |
| }, |
| { |
| "name": "ResponseController.SetWriteDeadline" |
| }, |
| { |
| "name": "Serve" |
| }, |
| { |
| "name": "ServeContent" |
| }, |
| { |
| "name": "ServeFile" |
| }, |
| { |
| "name": "ServeFileFS" |
| }, |
| { |
| "name": "ServeMux.Handle" |
| }, |
| { |
| "name": "ServeMux.HandleFunc" |
| }, |
| { |
| "name": "ServeMux.ServeHTTP" |
| }, |
| { |
| "name": "ServeTLS" |
| }, |
| { |
| "name": "Server.Close" |
| }, |
| { |
| "name": "Server.ListenAndServe" |
| }, |
| { |
| "name": "Server.ListenAndServeTLS" |
| }, |
| { |
| "name": "Server.Serve" |
| }, |
| { |
| "name": "Server.ServeTLS" |
| }, |
| { |
| "name": "Server.SetKeepAlivesEnabled" |
| }, |
| { |
| "name": "Server.Shutdown" |
| }, |
| { |
| "name": "SetCookie" |
| }, |
| { |
| "name": "Transport.CancelRequest" |
| }, |
| { |
| "name": "Transport.Clone" |
| }, |
| { |
| "name": "Transport.CloseIdleConnections" |
| }, |
| { |
| "name": "Transport.NewClientConn" |
| }, |
| { |
| "name": "Transport.RoundTrip" |
| }, |
| { |
| "name": "body.Close" |
| }, |
| { |
| "name": "body.Read" |
| }, |
| { |
| "name": "bodyEOFSignal.Close" |
| }, |
| { |
| "name": "bodyEOFSignal.Read" |
| }, |
| { |
| "name": "bodyLocked.Read" |
| }, |
| { |
| "name": "bufioFlushWriter.Write" |
| }, |
| { |
| "name": "cancelTimerBody.Close" |
| }, |
| { |
| "name": "cancelTimerBody.Read" |
| }, |
| { |
| "name": "checkConnErrorWriter.Write" |
| }, |
| { |
| "name": "chunkWriter.Write" |
| }, |
| { |
| "name": "connReader.Read" |
| }, |
| { |
| "name": "connectMethodKey.String" |
| }, |
| { |
| "name": "expectContinueReader.Close" |
| }, |
| { |
| "name": "expectContinueReader.Read" |
| }, |
| { |
| "name": "extraHeader.Write" |
| }, |
| { |
| "name": "fileHandler.ServeHTTP" |
| }, |
| { |
| "name": "fileTransport.RoundTrip" |
| }, |
| { |
| "name": "globalOptionsHandler.ServeHTTP" |
| }, |
| { |
| "name": "gzipReader.Close" |
| }, |
| { |
| "name": "gzipReader.Read" |
| }, |
| { |
| "name": "http1ClientConn.Close" |
| }, |
| { |
| "name": "http1ClientConn.RoundTrip" |
| }, |
| { |
| "name": "http2ClientConn.RoundTrip" |
| }, |
| { |
| "name": "http2Handler.ServeHTTP" |
| }, |
| { |
| "name": "http2ResponseWriter.Flush" |
| }, |
| { |
| "name": "http2ResponseWriter.FlushError" |
| }, |
| { |
| "name": "http2ResponseWriter.Push" |
| }, |
| { |
| "name": "http2RoundTripper.RoundTrip" |
| }, |
| { |
| "name": "http3ServerHandler.ServeHTTP" |
| }, |
| { |
| "name": "initALPNRequest.ServeHTTP" |
| }, |
| { |
| "name": "loggingConn.Close" |
| }, |
| { |
| "name": "loggingConn.Read" |
| }, |
| { |
| "name": "loggingConn.Write" |
| }, |
| { |
| "name": "maxBytesReader.Close" |
| }, |
| { |
| "name": "maxBytesReader.Read" |
| }, |
| { |
| "name": "onceCloseListener.Close" |
| }, |
| { |
| "name": "persistConn.Read" |
| }, |
| { |
| "name": "persistConnWriter.ReadFrom" |
| }, |
| { |
| "name": "persistConnWriter.Write" |
| }, |
| { |
| "name": "populateResponse.Write" |
| }, |
| { |
| "name": "populateResponse.WriteHeader" |
| }, |
| { |
| "name": "readTrackingBody.Close" |
| }, |
| { |
| "name": "readTrackingBody.Read" |
| }, |
| { |
| "name": "readWriteCloserBody.CloseWrite" |
| }, |
| { |
| "name": "readWriteCloserBody.Read" |
| }, |
| { |
| "name": "redirectHandler.ServeHTTP" |
| }, |
| { |
| "name": "response.Flush" |
| }, |
| { |
| "name": "response.FlushError" |
| }, |
| { |
| "name": "response.Hijack" |
| }, |
| { |
| "name": "response.ReadFrom" |
| }, |
| { |
| "name": "response.Write" |
| }, |
| { |
| "name": "response.WriteHeader" |
| }, |
| { |
| "name": "response.WriteString" |
| }, |
| { |
| "name": "serverHandler.ServeHTTP" |
| }, |
| { |
| "name": "socksDialer.DialWithConn" |
| }, |
| { |
| "name": "socksUsernamePassword.Authenticate" |
| }, |
| { |
| "name": "stringWriter.WriteString" |
| }, |
| { |
| "name": "timeoutHandler.ServeHTTP" |
| }, |
| { |
| "name": "timeoutWriter.Write" |
| }, |
| { |
| "name": "timeoutWriter.WriteHeader" |
| }, |
| { |
| "name": "transportReadFromServerError.Error" |
| }, |
| { |
| "name": "unencryptedHTTP2Request.ServeHTTP" |
| } |
| ], |
| "defaultStatus": "unaffected" |
| } |
| ], |
| "problemTypes": [ |
| { |
| "descriptions": [ |
| { |
| "lang": "en", |
| "description": "CWE-444: Inconsistent Interpretation of HTTP Requests ('HTTP Request/Response Smuggling')" |
| } |
| ] |
| } |
| ], |
| "references": [ |
| { |
| "url": "https://go.dev/cl/847311" |
| }, |
| { |
| "url": "https://go.dev/issue/81744" |
| }, |
| { |
| "url": "https://groups.google.com/g/golang-announce/c/U2fTuyDJznI" |
| }, |
| { |
| "url": "https://pkg.go.dev/vuln/GO-2026-6613" |
| } |
| ], |
| "credits": [ |
| { |
| "lang": "en", |
| "value": "Jakub Ciolek (https://ciolek.dev)" |
| } |
| ] |
| } |
| } |
| } |