CVE-2023-45288 (GCVE-0-2023-45288)

Vulnerability from cvelistv5 – Published: 2024-04-04 20:37 – Updated: 2025-11-04 18:17
VLAI
Title
HTTP/2 CONTINUATION flood in net/http
Summary
An attacker may cause an HTTP/2 endpoint to read arbitrary amounts of header data by sending an excessive number of CONTINUATION frames. Maintaining HPACK state requires parsing and processing all HEADERS and CONTINUATION frames on a connection. When a request's headers exceed MaxHeaderBytes, no memory is allocated to store the excess headers, but they are still parsed. This permits an attacker to cause an HTTP/2 endpoint to read arbitrary amounts of header data, all associated with a request which is going to be rejected. These headers can include Huffman-encoded data which is significantly more expensive for the receiver to decode than for an attacker to send. The fix sets a limit on the amount of excess header frames we will process before closing a connection.
SSVC
Exploitation: none Automatable: yes Technical Impact: partial
CISA Coordinator (v2.0.3)
CWE
  • CWE-400 - Uncontrolled Resource Consumption
Assigner
Go
Impacted products
Vendor Product Version
Go standard library net/http Affected: 0 , < 1.21.9 (semver)
Affected: 1.22.0-0 , < 1.22.2 (semver)
Create a notification for this product.
golang.org/x/net golang.org/x/net/http2 Affected: 0 , < 0.23.0 (semver)
Create a notification for this product.
go_standard_library net\/http Affected: 0 , < 1.21.9 (custom)
Affected: 1.22.0-0 , < 1.22.2 (custom)
    cpe:2.3:a:go_standard_library:net\/http:*:*:*:*:*:*:*:*
Create a notification for this product.
golang http2 Affected: 0 , < 0.23.0 (custom)
    cpe:2.3:a:golang:http2:*:*:*:*:*:*:*:*
Create a notification for this product.
Credits
Bartek Nowotarski (https://nowotarski.info/)
Show details on NVD website

{
  "containers": {
    "adp": [
      {
        "providerMetadata": {
          "dateUpdated": "2025-11-04T18:17:43.583Z",
          "orgId": "af854a3a-2127-422b-91ae-364da2661108",
          "shortName": "CVE"
        },
        "references": [
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://go.dev/issue/65051"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://go.dev/cl/576155"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://groups.google.com/g/golang-announce/c/YgW0sx8mN3M"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://pkg.go.dev/vuln/GO-2024-2687"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://security.netapp.com/advisory/ntap-20240419-0009/"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/QRYFHIQ6XRKRYBI2F5UESH67BJBQXUPT/"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "http://www.openwall.com/lists/oss-security/2024/04/05/4"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "http://www.openwall.com/lists/oss-security/2024/04/03/16"
          },
          {
            "url": "https://www.kb.cert.org/vuls/id/421644"
          }
        ],
        "title": "CVE Program Container"
      },
      {
        "affected": [
          {
            "cpes": [
              "cpe:2.3:a:go_standard_library:net\\/http:*:*:*:*:*:*:*:*"
            ],
            "defaultStatus": "unknown",
            "product": "net\\/http",
            "vendor": "go_standard_library",
            "versions": [
              {
                "lessThan": "1.21.9",
                "status": "affected",
                "version": "0",
                "versionType": "custom"
              },
              {
                "lessThan": "1.22.2",
                "status": "affected",
                "version": "1.22.0-0",
                "versionType": "custom"
              }
            ]
          },
          {
            "cpes": [
              "cpe:2.3:a:golang:http2:*:*:*:*:*:*:*:*"
            ],
            "defaultStatus": "unknown",
            "product": "http2",
            "vendor": "golang",
            "versions": [
              {
                "lessThan": "0.23.0",
                "status": "affected",
                "version": "0",
                "versionType": "custom"
              }
            ]
          }
        ],
        "metrics": [
          {
            "cvssV3_1": {
              "attackComplexity": "LOW",
              "attackVector": "NETWORK",
              "availabilityImpact": "HIGH",
              "baseScore": 7.5,
              "baseSeverity": "HIGH",
              "confidentialityImpact": "NONE",
              "integrityImpact": "NONE",
              "privilegesRequired": "NONE",
              "scope": "UNCHANGED",
              "userInteraction": "NONE",
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H",
              "version": "3.1"
            }
          },
          {
            "other": {
              "content": {
                "id": "CVE-2023-45288",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "yes"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2024-04-05T17:08:42.212936Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2024-08-26T20:40:01.996Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "collectionURL": "https://pkg.go.dev",
          "defaultStatus": "unaffected",
          "packageName": "net/http",
          "product": "net/http",
          "programRoutines": [
            {
              "name": "http2Framer.readMetaFrame"
            },
            {
              "name": "CanonicalHeaderKey"
            },
            {
              "name": "Client.CloseIdleConnections"
            },
            {
              "name": "Client.Do"
            },
            {
              "name": "Client.Get"
            },
            {
              "name": "Client.Head"
            },
            {
              "name": "Client.Post"
            },
            {
              "name": "Client.PostForm"
            },
            {
              "name": "Cookie.String"
            },
            {
              "name": "Cookie.Valid"
            },
            {
              "name": "Dir.Open"
            },
            {
              "name": "Error"
            },
            {
              "name": "Get"
            },
            {
              "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": "ParseTime"
            },
            {
              "name": "Post"
            },
            {
              "name": "PostForm"
            },
            {
              "name": "ProxyFromEnvironment"
            },
            {
              "name": "ReadRequest"
            },
            {
              "name": "ReadResponse"
            },
            {
              "name": "Redirect"
            },
            {
              "name": "Request.AddCookie"
            },
            {
              "name": "Request.BasicAuth"
            },
            {
              "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": "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.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": "http2ClientConn.Close"
            },
            {
              "name": "http2ClientConn.Ping"
            },
            {
              "name": "http2ClientConn.RoundTrip"
            },
            {
              "name": "http2ClientConn.Shutdown"
            },
            {
              "name": "http2ConnectionError.Error"
            },
            {
              "name": "http2ErrCode.String"
            },
            {
              "name": "http2FrameHeader.String"
            },
            {
              "name": "http2FrameType.String"
            },
            {
              "name": "http2FrameWriteRequest.String"
            },
            {
              "name": "http2Framer.ReadFrame"
            },
            {
              "name": "http2Framer.WriteContinuation"
            },
            {
              "name": "http2Framer.WriteData"
            },
            {
              "name": "http2Framer.WriteDataPadded"
            },
            {
              "name": "http2Framer.WriteGoAway"
            },
            {
              "name": "http2Framer.WriteHeaders"
            },
            {
              "name": "http2Framer.WritePing"
            },
            {
              "name": "http2Framer.WritePriority"
            },
            {
              "name": "http2Framer.WritePushPromise"
            },
            {
              "name": "http2Framer.WriteRSTStream"
            },
            {
              "name": "http2Framer.WriteRawFrame"
            },
            {
              "name": "http2Framer.WriteSettings"
            },
            {
              "name": "http2Framer.WriteSettingsAck"
            },
            {
              "name": "http2Framer.WriteWindowUpdate"
            },
            {
              "name": "http2GoAwayError.Error"
            },
            {
              "name": "http2Server.ServeConn"
            },
            {
              "name": "http2Setting.String"
            },
            {
              "name": "http2SettingID.String"
            },
            {
              "name": "http2SettingsFrame.ForeachSetting"
            },
            {
              "name": "http2StreamError.Error"
            },
            {
              "name": "http2Transport.CloseIdleConnections"
            },
            {
              "name": "http2Transport.NewClientConn"
            },
            {
              "name": "http2Transport.RoundTrip"
            },
            {
              "name": "http2Transport.RoundTripOpt"
            },
            {
              "name": "http2bufferedWriter.Flush"
            },
            {
              "name": "http2bufferedWriter.Write"
            },
            {
              "name": "http2chunkWriter.Write"
            },
            {
              "name": "http2clientConnPool.GetClientConn"
            },
            {
              "name": "http2connError.Error"
            },
            {
              "name": "http2dataBuffer.Read"
            },
            {
              "name": "http2duplicatePseudoHeaderError.Error"
            },
            {
              "name": "http2gzipReader.Close"
            },
            {
              "name": "http2gzipReader.Read"
            },
            {
              "name": "http2headerFieldNameError.Error"
            },
            {
              "name": "http2headerFieldValueError.Error"
            },
            {
              "name": "http2noDialClientConnPool.GetClientConn"
            },
            {
              "name": "http2noDialH2RoundTripper.RoundTrip"
            },
            {
              "name": "http2pipe.Read"
            },
            {
              "name": "http2priorityWriteScheduler.CloseStream"
            },
            {
              "name": "http2priorityWriteScheduler.OpenStream"
            },
            {
              "name": "http2pseudoHeaderError.Error"
            },
            {
              "name": "http2requestBody.Close"
            },
            {
              "name": "http2requestBody.Read"
            },
            {
              "name": "http2responseWriter.Flush"
            },
            {
              "name": "http2responseWriter.FlushError"
            },
            {
              "name": "http2responseWriter.Push"
            },
            {
              "name": "http2responseWriter.SetReadDeadline"
            },
            {
              "name": "http2responseWriter.SetWriteDeadline"
            },
            {
              "name": "http2responseWriter.Write"
            },
            {
              "name": "http2responseWriter.WriteHeader"
            },
            {
              "name": "http2responseWriter.WriteString"
            },
            {
              "name": "http2roundRobinWriteScheduler.OpenStream"
            },
            {
              "name": "http2serverConn.CloseConn"
            },
            {
              "name": "http2serverConn.Flush"
            },
            {
              "name": "http2stickyErrWriter.Write"
            },
            {
              "name": "http2transportResponseBody.Close"
            },
            {
              "name": "http2transportResponseBody.Read"
            },
            {
              "name": "http2writeData.String"
            },
            {
              "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.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"
            }
          ],
          "vendor": "Go standard library",
          "versions": [
            {
              "lessThan": "1.21.9",
              "status": "affected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThan": "1.22.2",
              "status": "affected",
              "version": "1.22.0-0",
              "versionType": "semver"
            }
          ]
        },
        {
          "collectionURL": "https://pkg.go.dev",
          "defaultStatus": "unaffected",
          "packageName": "golang.org/x/net/http2",
          "product": "golang.org/x/net/http2",
          "programRoutines": [
            {
              "name": "Framer.readMetaFrame"
            },
            {
              "name": "ClientConn.Close"
            },
            {
              "name": "ClientConn.Ping"
            },
            {
              "name": "ClientConn.RoundTrip"
            },
            {
              "name": "ClientConn.Shutdown"
            },
            {
              "name": "ConfigureServer"
            },
            {
              "name": "ConfigureTransport"
            },
            {
              "name": "ConfigureTransports"
            },
            {
              "name": "ConnectionError.Error"
            },
            {
              "name": "ErrCode.String"
            },
            {
              "name": "FrameHeader.String"
            },
            {
              "name": "FrameType.String"
            },
            {
              "name": "FrameWriteRequest.String"
            },
            {
              "name": "Framer.ReadFrame"
            },
            {
              "name": "Framer.WriteContinuation"
            },
            {
              "name": "Framer.WriteData"
            },
            {
              "name": "Framer.WriteDataPadded"
            },
            {
              "name": "Framer.WriteGoAway"
            },
            {
              "name": "Framer.WriteHeaders"
            },
            {
              "name": "Framer.WritePing"
            },
            {
              "name": "Framer.WritePriority"
            },
            {
              "name": "Framer.WritePushPromise"
            },
            {
              "name": "Framer.WriteRSTStream"
            },
            {
              "name": "Framer.WriteRawFrame"
            },
            {
              "name": "Framer.WriteSettings"
            },
            {
              "name": "Framer.WriteSettingsAck"
            },
            {
              "name": "Framer.WriteWindowUpdate"
            },
            {
              "name": "GoAwayError.Error"
            },
            {
              "name": "ReadFrameHeader"
            },
            {
              "name": "Server.ServeConn"
            },
            {
              "name": "Setting.String"
            },
            {
              "name": "SettingID.String"
            },
            {
              "name": "SettingsFrame.ForeachSetting"
            },
            {
              "name": "StreamError.Error"
            },
            {
              "name": "Transport.CloseIdleConnections"
            },
            {
              "name": "Transport.NewClientConn"
            },
            {
              "name": "Transport.RoundTrip"
            },
            {
              "name": "Transport.RoundTripOpt"
            },
            {
              "name": "bufferedWriter.Flush"
            },
            {
              "name": "bufferedWriter.Write"
            },
            {
              "name": "chunkWriter.Write"
            },
            {
              "name": "clientConnPool.GetClientConn"
            },
            {
              "name": "connError.Error"
            },
            {
              "name": "dataBuffer.Read"
            },
            {
              "name": "duplicatePseudoHeaderError.Error"
            },
            {
              "name": "gzipReader.Close"
            },
            {
              "name": "gzipReader.Read"
            },
            {
              "name": "headerFieldNameError.Error"
            },
            {
              "name": "headerFieldValueError.Error"
            },
            {
              "name": "noDialClientConnPool.GetClientConn"
            },
            {
              "name": "noDialH2RoundTripper.RoundTrip"
            },
            {
              "name": "pipe.Read"
            },
            {
              "name": "priorityWriteScheduler.CloseStream"
            },
            {
              "name": "priorityWriteScheduler.OpenStream"
            },
            {
              "name": "pseudoHeaderError.Error"
            },
            {
              "name": "requestBody.Close"
            },
            {
              "name": "requestBody.Read"
            },
            {
              "name": "responseWriter.Flush"
            },
            {
              "name": "responseWriter.FlushError"
            },
            {
              "name": "responseWriter.Push"
            },
            {
              "name": "responseWriter.SetReadDeadline"
            },
            {
              "name": "responseWriter.SetWriteDeadline"
            },
            {
              "name": "responseWriter.Write"
            },
            {
              "name": "responseWriter.WriteHeader"
            },
            {
              "name": "responseWriter.WriteString"
            },
            {
              "name": "roundRobinWriteScheduler.OpenStream"
            },
            {
              "name": "serverConn.CloseConn"
            },
            {
              "name": "serverConn.Flush"
            },
            {
              "name": "stickyErrWriter.Write"
            },
            {
              "name": "transportResponseBody.Close"
            },
            {
              "name": "transportResponseBody.Read"
            },
            {
              "name": "writeData.String"
            }
          ],
          "vendor": "golang.org/x/net",
          "versions": [
            {
              "lessThan": "0.23.0",
              "status": "affected",
              "version": "0",
              "versionType": "semver"
            }
          ]
        }
      ],
      "credits": [
        {
          "lang": "en",
          "value": "Bartek Nowotarski (https://nowotarski.info/)"
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "An attacker may cause an HTTP/2 endpoint to read arbitrary amounts of header data by sending an excessive number of CONTINUATION frames. Maintaining HPACK state requires parsing and processing all HEADERS and CONTINUATION frames on a connection. When a request\u0027s headers exceed MaxHeaderBytes, no memory is allocated to store the excess headers, but they are still parsed. This permits an attacker to cause an HTTP/2 endpoint to read arbitrary amounts of header data, all associated with a request which is going to be rejected. These headers can include Huffman-encoded data which is significantly more expensive for the receiver to decode than for an attacker to send. The fix sets a limit on the amount of excess header frames we will process before closing a connection."
        }
      ],
      "problemTypes": [
        {
          "descriptions": [
            {
              "description": "CWE-400: Uncontrolled Resource Consumption",
              "lang": "en"
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2024-05-01T17:10:07.754Z",
        "orgId": "1bb62c36-49e3-4200-9d77-64a1400537cc",
        "shortName": "Go"
      },
      "references": [
        {
          "url": "https://go.dev/issue/65051"
        },
        {
          "url": "https://go.dev/cl/576155"
        },
        {
          "url": "https://groups.google.com/g/golang-announce/c/YgW0sx8mN3M"
        },
        {
          "url": "https://pkg.go.dev/vuln/GO-2024-2687"
        },
        {
          "url": "https://security.netapp.com/advisory/ntap-20240419-0009/"
        },
        {
          "url": "https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/QRYFHIQ6XRKRYBI2F5UESH67BJBQXUPT/"
        },
        {
          "url": "http://www.openwall.com/lists/oss-security/2024/04/05/4"
        },
        {
          "url": "http://www.openwall.com/lists/oss-security/2024/04/03/16"
        }
      ],
      "title": "HTTP/2 CONTINUATION flood in net/http"
    }
  },
  "cveMetadata": {
    "assignerOrgId": "1bb62c36-49e3-4200-9d77-64a1400537cc",
    "assignerShortName": "Go",
    "cveId": "CVE-2023-45288",
    "datePublished": "2024-04-04T20:37:30.714Z",
    "dateReserved": "2023-10-06T17:06:26.221Z",
    "dateUpdated": "2025-11-04T18:17:43.583Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2023-45288",
      "date": "2026-06-30",
      "epss": "0.91969",
      "percentile": "0.99806"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2023-45288\",\"sourceIdentifier\":\"security@golang.org\",\"published\":\"2024-04-04T21:15:16.113\",\"lastModified\":\"2026-06-17T06:28:35.580\",\"vulnStatus\":\"Deferred\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"An attacker may cause an HTTP/2 endpoint to read arbitrary amounts of header data by sending an excessive number of CONTINUATION frames. Maintaining HPACK state requires parsing and processing all HEADERS and CONTINUATION frames on a connection. When a request\u0027s headers exceed MaxHeaderBytes, no memory is allocated to store the excess headers, but they are still parsed. This permits an attacker to cause an HTTP/2 endpoint to read arbitrary amounts of header data, all associated with a request which is going to be rejected. These headers can include Huffman-encoded data which is significantly more expensive for the receiver to decode than for an attacker to send. The fix sets a limit on the amount of excess header frames we will process before closing a connection.\"},{\"lang\":\"es\",\"value\":\"Un atacante puede hacer que un endpoint HTTP/2 lea cantidades arbitrarias de datos de encabezado enviando una cantidad excesiva de tramas de CONTINUACI\u00d3N. Mantener el estado de HPACK requiere analizar y procesar todos los encabezados y tramas de CONTINUACI\u00d3N en una conexi\u00f3n. Cuando los encabezados de una solicitud exceden MaxHeaderBytes, no se asigna memoria para almacenar los encabezados sobrantes, pero a\u00fan as\u00ed se analizan. Esto permite a un atacante hacer que un endpoint HTTP/2 lea cantidades arbitrarias de datos de encabezado, todos asociados con una solicitud que ser\u00e1 rechazada. Estos encabezados pueden incluir datos codificados por Huffman, cuya decodificaci\u00f3n es significativamente m\u00e1s costosa para el receptor que para el atacante. La soluci\u00f3n establece un l\u00edmite en la cantidad de fotogramas de encabezado excedentes que procesaremos antes de cerrar una conexi\u00f3n.\"}],\"affected\":[{\"source\":\"security@golang.org\",\"affectedData\":[{\"vendor\":\"Go standard library\",\"product\":\"net/http\",\"defaultStatus\":\"unaffected\",\"collectionURL\":\"https://pkg.go.dev\",\"packageName\":\"net/http\",\"programRoutines\":[{\"name\":\"http2Framer.readMetaFrame\"},{\"name\":\"CanonicalHeaderKey\"},{\"name\":\"Client.CloseIdleConnections\"},{\"name\":\"Client.Do\"},{\"name\":\"Client.Get\"},{\"name\":\"Client.Head\"},{\"name\":\"Client.Post\"},{\"name\":\"Client.PostForm\"},{\"name\":\"Cookie.String\"},{\"name\":\"Cookie.Valid\"},{\"name\":\"Dir.Open\"},{\"name\":\"Error\"},{\"name\":\"Get\"},{\"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\":\"ParseTime\"},{\"name\":\"Post\"},{\"name\":\"PostForm\"},{\"name\":\"ProxyFromEnvironment\"},{\"name\":\"ReadRequest\"},{\"name\":\"ReadResponse\"},{\"name\":\"Redirect\"},{\"name\":\"Request.AddCookie\"},{\"name\":\"Request.BasicAuth\"},{\"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\":\"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.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\":\"http2ClientConn.Close\"},{\"name\":\"http2ClientConn.Ping\"},{\"name\":\"http2ClientConn.RoundTrip\"},{\"name\":\"http2ClientConn.Shutdown\"},{\"name\":\"http2ConnectionError.Error\"},{\"name\":\"http2ErrCode.String\"},{\"name\":\"http2FrameHeader.String\"},{\"name\":\"http2FrameType.String\"},{\"name\":\"http2FrameWriteRequest.String\"},{\"name\":\"http2Framer.ReadFrame\"},{\"name\":\"http2Framer.WriteContinuation\"},{\"name\":\"http2Framer.WriteData\"},{\"name\":\"http2Framer.WriteDataPadded\"},{\"name\":\"http2Framer.WriteGoAway\"},{\"name\":\"http2Framer.WriteHeaders\"},{\"name\":\"http2Framer.WritePing\"},{\"name\":\"http2Framer.WritePriority\"},{\"name\":\"http2Framer.WritePushPromise\"},{\"name\":\"http2Framer.WriteRSTStream\"},{\"name\":\"http2Framer.WriteRawFrame\"},{\"name\":\"http2Framer.WriteSettings\"},{\"name\":\"http2Framer.WriteSettingsAck\"},{\"name\":\"http2Framer.WriteWindowUpdate\"},{\"name\":\"http2GoAwayError.Error\"},{\"name\":\"http2Server.ServeConn\"},{\"name\":\"http2Setting.String\"},{\"name\":\"http2SettingID.String\"},{\"name\":\"http2SettingsFrame.ForeachSetting\"},{\"name\":\"http2StreamError.Error\"},{\"name\":\"http2Transport.CloseIdleConnections\"},{\"name\":\"http2Transport.NewClientConn\"},{\"name\":\"http2Transport.RoundTrip\"},{\"name\":\"http2Transport.RoundTripOpt\"},{\"name\":\"http2bufferedWriter.Flush\"},{\"name\":\"http2bufferedWriter.Write\"},{\"name\":\"http2chunkWriter.Write\"},{\"name\":\"http2clientConnPool.GetClientConn\"},{\"name\":\"http2connError.Error\"},{\"name\":\"http2dataBuffer.Read\"},{\"name\":\"http2duplicatePseudoHeaderError.Error\"},{\"name\":\"http2gzipReader.Close\"},{\"name\":\"http2gzipReader.Read\"},{\"name\":\"http2headerFieldNameError.Error\"},{\"name\":\"http2headerFieldValueError.Error\"},{\"name\":\"http2noDialClientConnPool.GetClientConn\"},{\"name\":\"http2noDialH2RoundTripper.RoundTrip\"},{\"name\":\"http2pipe.Read\"},{\"name\":\"http2priorityWriteScheduler.CloseStream\"},{\"name\":\"http2priorityWriteScheduler.OpenStream\"},{\"name\":\"http2pseudoHeaderError.Error\"},{\"name\":\"http2requestBody.Close\"},{\"name\":\"http2requestBody.Read\"},{\"name\":\"http2responseWriter.Flush\"},{\"name\":\"http2responseWriter.FlushError\"},{\"name\":\"http2responseWriter.Push\"},{\"name\":\"http2responseWriter.SetReadDeadline\"},{\"name\":\"http2responseWriter.SetWriteDeadline\"},{\"name\":\"http2responseWriter.Write\"},{\"name\":\"http2responseWriter.WriteHeader\"},{\"name\":\"http2responseWriter.WriteString\"},{\"name\":\"http2roundRobinWriteScheduler.OpenStream\"},{\"name\":\"http2serverConn.CloseConn\"},{\"name\":\"http2serverConn.Flush\"},{\"name\":\"http2stickyErrWriter.Write\"},{\"name\":\"http2transportResponseBody.Close\"},{\"name\":\"http2transportResponseBody.Read\"},{\"name\":\"http2writeData.String\"},{\"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.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\"}],\"versions\":[{\"version\":\"0\",\"lessThan\":\"1.21.9\",\"versionType\":\"semver\",\"status\":\"affected\"},{\"version\":\"1.22.0-0\",\"lessThan\":\"1.22.2\",\"versionType\":\"semver\",\"status\":\"affected\"}]},{\"vendor\":\"golang.org/x/net\",\"product\":\"golang.org/x/net/http2\",\"defaultStatus\":\"unaffected\",\"collectionURL\":\"https://pkg.go.dev\",\"packageName\":\"golang.org/x/net/http2\",\"programRoutines\":[{\"name\":\"Framer.readMetaFrame\"},{\"name\":\"ClientConn.Close\"},{\"name\":\"ClientConn.Ping\"},{\"name\":\"ClientConn.RoundTrip\"},{\"name\":\"ClientConn.Shutdown\"},{\"name\":\"ConfigureServer\"},{\"name\":\"ConfigureTransport\"},{\"name\":\"ConfigureTransports\"},{\"name\":\"ConnectionError.Error\"},{\"name\":\"ErrCode.String\"},{\"name\":\"FrameHeader.String\"},{\"name\":\"FrameType.String\"},{\"name\":\"FrameWriteRequest.String\"},{\"name\":\"Framer.ReadFrame\"},{\"name\":\"Framer.WriteContinuation\"},{\"name\":\"Framer.WriteData\"},{\"name\":\"Framer.WriteDataPadded\"},{\"name\":\"Framer.WriteGoAway\"},{\"name\":\"Framer.WriteHeaders\"},{\"name\":\"Framer.WritePing\"},{\"name\":\"Framer.WritePriority\"},{\"name\":\"Framer.WritePushPromise\"},{\"name\":\"Framer.WriteRSTStream\"},{\"name\":\"Framer.WriteRawFrame\"},{\"name\":\"Framer.WriteSettings\"},{\"name\":\"Framer.WriteSettingsAck\"},{\"name\":\"Framer.WriteWindowUpdate\"},{\"name\":\"GoAwayError.Error\"},{\"name\":\"ReadFrameHeader\"},{\"name\":\"Server.ServeConn\"},{\"name\":\"Setting.String\"},{\"name\":\"SettingID.String\"},{\"name\":\"SettingsFrame.ForeachSetting\"},{\"name\":\"StreamError.Error\"},{\"name\":\"Transport.CloseIdleConnections\"},{\"name\":\"Transport.NewClientConn\"},{\"name\":\"Transport.RoundTrip\"},{\"name\":\"Transport.RoundTripOpt\"},{\"name\":\"bufferedWriter.Flush\"},{\"name\":\"bufferedWriter.Write\"},{\"name\":\"chunkWriter.Write\"},{\"name\":\"clientConnPool.GetClientConn\"},{\"name\":\"connError.Error\"},{\"name\":\"dataBuffer.Read\"},{\"name\":\"duplicatePseudoHeaderError.Error\"},{\"name\":\"gzipReader.Close\"},{\"name\":\"gzipReader.Read\"},{\"name\":\"headerFieldNameError.Error\"},{\"name\":\"headerFieldValueError.Error\"},{\"name\":\"noDialClientConnPool.GetClientConn\"},{\"name\":\"noDialH2RoundTripper.RoundTrip\"},{\"name\":\"pipe.Read\"},{\"name\":\"priorityWriteScheduler.CloseStream\"},{\"name\":\"priorityWriteScheduler.OpenStream\"},{\"name\":\"pseudoHeaderError.Error\"},{\"name\":\"requestBody.Close\"},{\"name\":\"requestBody.Read\"},{\"name\":\"responseWriter.Flush\"},{\"name\":\"responseWriter.FlushError\"},{\"name\":\"responseWriter.Push\"},{\"name\":\"responseWriter.SetReadDeadline\"},{\"name\":\"responseWriter.SetWriteDeadline\"},{\"name\":\"responseWriter.Write\"},{\"name\":\"responseWriter.WriteHeader\"},{\"name\":\"responseWriter.WriteString\"},{\"name\":\"roundRobinWriteScheduler.OpenStream\"},{\"name\":\"serverConn.CloseConn\"},{\"name\":\"serverConn.Flush\"},{\"name\":\"stickyErrWriter.Write\"},{\"name\":\"transportResponseBody.Close\"},{\"name\":\"transportResponseBody.Read\"},{\"name\":\"writeData.String\"}],\"versions\":[{\"version\":\"0\",\"lessThan\":\"0.23.0\",\"versionType\":\"semver\",\"status\":\"affected\"}]}]},{\"source\":\"134c704f-9b21-4f2e-91b3-4a467353bcc0\",\"affectedData\":[{\"vendor\":\"go_standard_library\",\"product\":\"net\\\\/http\",\"defaultStatus\":\"unknown\",\"cpes\":[\"cpe:2.3:a:go_standard_library:net\\\\/http:*:*:*:*:*:*:*:*\"],\"versions\":[{\"version\":\"0\",\"lessThan\":\"1.21.9\",\"versionType\":\"custom\",\"status\":\"affected\"},{\"version\":\"1.22.0-0\",\"lessThan\":\"1.22.2\",\"versionType\":\"custom\",\"status\":\"affected\"}]},{\"vendor\":\"golang\",\"product\":\"http2\",\"defaultStatus\":\"unknown\",\"cpes\":[\"cpe:2.3:a:golang:http2:*:*:*:*:*:*:*:*\"],\"versions\":[{\"version\":\"0\",\"lessThan\":\"0.23.0\",\"versionType\":\"custom\",\"status\":\"affected\"}]}]}],\"metrics\":{\"cvssMetricV31\":[{\"source\":\"134c704f-9b21-4f2e-91b3-4a467353bcc0\",\"type\":\"Secondary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H\",\"baseScore\":7.5,\"baseSeverity\":\"HIGH\",\"attackVector\":\"NETWORK\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"NONE\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"NONE\",\"integrityImpact\":\"NONE\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":3.9,\"impactScore\":3.6}],\"ssvcV203\":[{\"source\":\"134c704f-9b21-4f2e-91b3-4a467353bcc0\",\"ssvcData\":{\"timestamp\":\"2024-04-05T17:08:42.212936Z\",\"id\":\"CVE-2023-45288\",\"options\":[{\"exploitation\":\"none\"},{\"automatable\":\"yes\"},{\"technicalImpact\":\"partial\"}],\"role\":\"CISA Coordinator\",\"version\":\"2.0.3\"}}]},\"references\":[{\"url\":\"http://www.openwall.com/lists/oss-security/2024/04/03/16\",\"source\":\"security@golang.org\"},{\"url\":\"http://www.openwall.com/lists/oss-security/2024/04/05/4\",\"source\":\"security@golang.org\"},{\"url\":\"https://go.dev/cl/576155\",\"source\":\"security@golang.org\"},{\"url\":\"https://go.dev/issue/65051\",\"source\":\"security@golang.org\"},{\"url\":\"https://groups.google.com/g/golang-announce/c/YgW0sx8mN3M\",\"source\":\"security@golang.org\"},{\"url\":\"https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/QRYFHIQ6XRKRYBI2F5UESH67BJBQXUPT/\",\"source\":\"security@golang.org\"},{\"url\":\"https://pkg.go.dev/vuln/GO-2024-2687\",\"source\":\"security@golang.org\"},{\"url\":\"https://security.netapp.com/advisory/ntap-20240419-0009/\",\"source\":\"security@golang.org\"},{\"url\":\"http://www.openwall.com/lists/oss-security/2024/04/03/16\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\"},{\"url\":\"http://www.openwall.com/lists/oss-security/2024/04/05/4\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\"},{\"url\":\"https://go.dev/cl/576155\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\"},{\"url\":\"https://go.dev/issue/65051\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\"},{\"url\":\"https://groups.google.com/g/golang-announce/c/YgW0sx8mN3M\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\"},{\"url\":\"https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/QRYFHIQ6XRKRYBI2F5UESH67BJBQXUPT/\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\"},{\"url\":\"https://pkg.go.dev/vuln/GO-2024-2687\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\"},{\"url\":\"https://security.netapp.com/advisory/ntap-20240419-0009/\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\"},{\"url\":\"https://www.kb.cert.org/vuls/id/421644\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\"}]}}",
    "vulnrichment": {
      "containers": "{\"adp\": [{\"title\": \"CVE Program Container\", \"references\": [{\"url\": \"https://go.dev/issue/65051\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://go.dev/cl/576155\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://groups.google.com/g/golang-announce/c/YgW0sx8mN3M\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://pkg.go.dev/vuln/GO-2024-2687\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://security.netapp.com/advisory/ntap-20240419-0009/\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/QRYFHIQ6XRKRYBI2F5UESH67BJBQXUPT/\", \"tags\": [\"x_transferred\"]}, {\"url\": \"http://www.openwall.com/lists/oss-security/2024/04/05/4\", \"tags\": [\"x_transferred\"]}, {\"url\": \"http://www.openwall.com/lists/oss-security/2024/04/03/16\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://www.kb.cert.org/vuls/id/421644\"}], \"providerMetadata\": {\"orgId\": \"af854a3a-2127-422b-91ae-364da2661108\", \"shortName\": \"CVE\", \"dateUpdated\": \"2025-11-04T18:17:43.583Z\"}}, {\"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:N/A:H\", \"integrityImpact\": \"NONE\", \"userInteraction\": \"NONE\", \"attackComplexity\": \"LOW\", \"availabilityImpact\": \"HIGH\", \"privilegesRequired\": \"NONE\", \"confidentialityImpact\": \"NONE\"}}, {\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2023-45288\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"yes\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2024-04-05T17:08:42.212936Z\"}}}], \"affected\": [{\"cpes\": [\"cpe:2.3:a:go_standard_library:net\\\\/http:*:*:*:*:*:*:*:*\"], \"vendor\": \"go_standard_library\", \"product\": \"net\\\\/http\", \"versions\": [{\"status\": \"affected\", \"version\": \"0\", \"lessThan\": \"1.21.9\", \"versionType\": \"custom\"}, {\"status\": \"affected\", \"version\": \"1.22.0-0\", \"lessThan\": \"1.22.2\", \"versionType\": \"custom\"}], \"defaultStatus\": \"unknown\"}, {\"cpes\": [\"cpe:2.3:a:golang:http2:*:*:*:*:*:*:*:*\"], \"vendor\": \"golang\", \"product\": \"http2\", \"versions\": [{\"status\": \"affected\", \"version\": \"0\", \"lessThan\": \"0.23.0\", \"versionType\": \"custom\"}], \"defaultStatus\": \"unknown\"}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2024-08-26T20:39:55.687Z\"}}], \"cna\": {\"title\": \"HTTP/2 CONTINUATION flood in net/http\", \"credits\": [{\"lang\": \"en\", \"value\": \"Bartek Nowotarski (https://nowotarski.info/)\"}], \"affected\": [{\"vendor\": \"Go standard library\", \"product\": \"net/http\", \"versions\": [{\"status\": \"affected\", \"version\": \"0\", \"lessThan\": \"1.21.9\", \"versionType\": \"semver\"}, {\"status\": \"affected\", \"version\": \"1.22.0-0\", \"lessThan\": \"1.22.2\", \"versionType\": \"semver\"}], \"packageName\": \"net/http\", \"collectionURL\": \"https://pkg.go.dev\", \"defaultStatus\": \"unaffected\", \"programRoutines\": [{\"name\": \"http2Framer.readMetaFrame\"}, {\"name\": \"CanonicalHeaderKey\"}, {\"name\": \"Client.CloseIdleConnections\"}, {\"name\": \"Client.Do\"}, {\"name\": \"Client.Get\"}, {\"name\": \"Client.Head\"}, {\"name\": \"Client.Post\"}, {\"name\": \"Client.PostForm\"}, {\"name\": \"Cookie.String\"}, {\"name\": \"Cookie.Valid\"}, {\"name\": \"Dir.Open\"}, {\"name\": \"Error\"}, {\"name\": \"Get\"}, {\"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\": \"ParseTime\"}, {\"name\": \"Post\"}, {\"name\": \"PostForm\"}, {\"name\": \"ProxyFromEnvironment\"}, {\"name\": \"ReadRequest\"}, {\"name\": \"ReadResponse\"}, {\"name\": \"Redirect\"}, {\"name\": \"Request.AddCookie\"}, {\"name\": \"Request.BasicAuth\"}, {\"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\": \"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.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\": \"http2ClientConn.Close\"}, {\"name\": \"http2ClientConn.Ping\"}, {\"name\": \"http2ClientConn.RoundTrip\"}, {\"name\": \"http2ClientConn.Shutdown\"}, {\"name\": \"http2ConnectionError.Error\"}, {\"name\": \"http2ErrCode.String\"}, {\"name\": \"http2FrameHeader.String\"}, {\"name\": \"http2FrameType.String\"}, {\"name\": \"http2FrameWriteRequest.String\"}, {\"name\": \"http2Framer.ReadFrame\"}, {\"name\": \"http2Framer.WriteContinuation\"}, {\"name\": \"http2Framer.WriteData\"}, {\"name\": \"http2Framer.WriteDataPadded\"}, {\"name\": \"http2Framer.WriteGoAway\"}, {\"name\": \"http2Framer.WriteHeaders\"}, {\"name\": \"http2Framer.WritePing\"}, {\"name\": \"http2Framer.WritePriority\"}, {\"name\": \"http2Framer.WritePushPromise\"}, {\"name\": \"http2Framer.WriteRSTStream\"}, {\"name\": \"http2Framer.WriteRawFrame\"}, {\"name\": \"http2Framer.WriteSettings\"}, {\"name\": \"http2Framer.WriteSettingsAck\"}, {\"name\": \"http2Framer.WriteWindowUpdate\"}, {\"name\": \"http2GoAwayError.Error\"}, {\"name\": \"http2Server.ServeConn\"}, {\"name\": \"http2Setting.String\"}, {\"name\": \"http2SettingID.String\"}, {\"name\": \"http2SettingsFrame.ForeachSetting\"}, {\"name\": \"http2StreamError.Error\"}, {\"name\": \"http2Transport.CloseIdleConnections\"}, {\"name\": \"http2Transport.NewClientConn\"}, {\"name\": \"http2Transport.RoundTrip\"}, {\"name\": \"http2Transport.RoundTripOpt\"}, {\"name\": \"http2bufferedWriter.Flush\"}, {\"name\": \"http2bufferedWriter.Write\"}, {\"name\": \"http2chunkWriter.Write\"}, {\"name\": \"http2clientConnPool.GetClientConn\"}, {\"name\": \"http2connError.Error\"}, {\"name\": \"http2dataBuffer.Read\"}, {\"name\": \"http2duplicatePseudoHeaderError.Error\"}, {\"name\": \"http2gzipReader.Close\"}, {\"name\": \"http2gzipReader.Read\"}, {\"name\": \"http2headerFieldNameError.Error\"}, {\"name\": \"http2headerFieldValueError.Error\"}, {\"name\": \"http2noDialClientConnPool.GetClientConn\"}, {\"name\": \"http2noDialH2RoundTripper.RoundTrip\"}, {\"name\": \"http2pipe.Read\"}, {\"name\": \"http2priorityWriteScheduler.CloseStream\"}, {\"name\": \"http2priorityWriteScheduler.OpenStream\"}, {\"name\": \"http2pseudoHeaderError.Error\"}, {\"name\": \"http2requestBody.Close\"}, {\"name\": \"http2requestBody.Read\"}, {\"name\": \"http2responseWriter.Flush\"}, {\"name\": \"http2responseWriter.FlushError\"}, {\"name\": \"http2responseWriter.Push\"}, {\"name\": \"http2responseWriter.SetReadDeadline\"}, {\"name\": \"http2responseWriter.SetWriteDeadline\"}, {\"name\": \"http2responseWriter.Write\"}, {\"name\": \"http2responseWriter.WriteHeader\"}, {\"name\": \"http2responseWriter.WriteString\"}, {\"name\": \"http2roundRobinWriteScheduler.OpenStream\"}, {\"name\": \"http2serverConn.CloseConn\"}, {\"name\": \"http2serverConn.Flush\"}, {\"name\": \"http2stickyErrWriter.Write\"}, {\"name\": \"http2transportResponseBody.Close\"}, {\"name\": \"http2transportResponseBody.Read\"}, {\"name\": \"http2writeData.String\"}, {\"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.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\"}]}, {\"vendor\": \"golang.org/x/net\", \"product\": \"golang.org/x/net/http2\", \"versions\": [{\"status\": \"affected\", \"version\": \"0\", \"lessThan\": \"0.23.0\", \"versionType\": \"semver\"}], \"packageName\": \"golang.org/x/net/http2\", \"collectionURL\": \"https://pkg.go.dev\", \"defaultStatus\": \"unaffected\", \"programRoutines\": [{\"name\": \"Framer.readMetaFrame\"}, {\"name\": \"ClientConn.Close\"}, {\"name\": \"ClientConn.Ping\"}, {\"name\": \"ClientConn.RoundTrip\"}, {\"name\": \"ClientConn.Shutdown\"}, {\"name\": \"ConfigureServer\"}, {\"name\": \"ConfigureTransport\"}, {\"name\": \"ConfigureTransports\"}, {\"name\": \"ConnectionError.Error\"}, {\"name\": \"ErrCode.String\"}, {\"name\": \"FrameHeader.String\"}, {\"name\": \"FrameType.String\"}, {\"name\": \"FrameWriteRequest.String\"}, {\"name\": \"Framer.ReadFrame\"}, {\"name\": \"Framer.WriteContinuation\"}, {\"name\": \"Framer.WriteData\"}, {\"name\": \"Framer.WriteDataPadded\"}, {\"name\": \"Framer.WriteGoAway\"}, {\"name\": \"Framer.WriteHeaders\"}, {\"name\": \"Framer.WritePing\"}, {\"name\": \"Framer.WritePriority\"}, {\"name\": \"Framer.WritePushPromise\"}, {\"name\": \"Framer.WriteRSTStream\"}, {\"name\": \"Framer.WriteRawFrame\"}, {\"name\": \"Framer.WriteSettings\"}, {\"name\": \"Framer.WriteSettingsAck\"}, {\"name\": \"Framer.WriteWindowUpdate\"}, {\"name\": \"GoAwayError.Error\"}, {\"name\": \"ReadFrameHeader\"}, {\"name\": \"Server.ServeConn\"}, {\"name\": \"Setting.String\"}, {\"name\": \"SettingID.String\"}, {\"name\": \"SettingsFrame.ForeachSetting\"}, {\"name\": \"StreamError.Error\"}, {\"name\": \"Transport.CloseIdleConnections\"}, {\"name\": \"Transport.NewClientConn\"}, {\"name\": \"Transport.RoundTrip\"}, {\"name\": \"Transport.RoundTripOpt\"}, {\"name\": \"bufferedWriter.Flush\"}, {\"name\": \"bufferedWriter.Write\"}, {\"name\": \"chunkWriter.Write\"}, {\"name\": \"clientConnPool.GetClientConn\"}, {\"name\": \"connError.Error\"}, {\"name\": \"dataBuffer.Read\"}, {\"name\": \"duplicatePseudoHeaderError.Error\"}, {\"name\": \"gzipReader.Close\"}, {\"name\": \"gzipReader.Read\"}, {\"name\": \"headerFieldNameError.Error\"}, {\"name\": \"headerFieldValueError.Error\"}, {\"name\": \"noDialClientConnPool.GetClientConn\"}, {\"name\": \"noDialH2RoundTripper.RoundTrip\"}, {\"name\": \"pipe.Read\"}, {\"name\": \"priorityWriteScheduler.CloseStream\"}, {\"name\": \"priorityWriteScheduler.OpenStream\"}, {\"name\": \"pseudoHeaderError.Error\"}, {\"name\": \"requestBody.Close\"}, {\"name\": \"requestBody.Read\"}, {\"name\": \"responseWriter.Flush\"}, {\"name\": \"responseWriter.FlushError\"}, {\"name\": \"responseWriter.Push\"}, {\"name\": \"responseWriter.SetReadDeadline\"}, {\"name\": \"responseWriter.SetWriteDeadline\"}, {\"name\": \"responseWriter.Write\"}, {\"name\": \"responseWriter.WriteHeader\"}, {\"name\": \"responseWriter.WriteString\"}, {\"name\": \"roundRobinWriteScheduler.OpenStream\"}, {\"name\": \"serverConn.CloseConn\"}, {\"name\": \"serverConn.Flush\"}, {\"name\": \"stickyErrWriter.Write\"}, {\"name\": \"transportResponseBody.Close\"}, {\"name\": \"transportResponseBody.Read\"}, {\"name\": \"writeData.String\"}]}], \"references\": [{\"url\": \"https://go.dev/issue/65051\"}, {\"url\": \"https://go.dev/cl/576155\"}, {\"url\": \"https://groups.google.com/g/golang-announce/c/YgW0sx8mN3M\"}, {\"url\": \"https://pkg.go.dev/vuln/GO-2024-2687\"}, {\"url\": \"https://security.netapp.com/advisory/ntap-20240419-0009/\"}, {\"url\": \"https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/QRYFHIQ6XRKRYBI2F5UESH67BJBQXUPT/\"}, {\"url\": \"http://www.openwall.com/lists/oss-security/2024/04/05/4\"}, {\"url\": \"http://www.openwall.com/lists/oss-security/2024/04/03/16\"}], \"descriptions\": [{\"lang\": \"en\", \"value\": \"An attacker may cause an HTTP/2 endpoint to read arbitrary amounts of header data by sending an excessive number of CONTINUATION frames. Maintaining HPACK state requires parsing and processing all HEADERS and CONTINUATION frames on a connection. When a request\u0027s headers exceed MaxHeaderBytes, no memory is allocated to store the excess headers, but they are still parsed. This permits an attacker to cause an HTTP/2 endpoint to read arbitrary amounts of header data, all associated with a request which is going to be rejected. These headers can include Huffman-encoded data which is significantly more expensive for the receiver to decode than for an attacker to send. The fix sets a limit on the amount of excess header frames we will process before closing a connection.\"}], \"problemTypes\": [{\"descriptions\": [{\"lang\": \"en\", \"description\": \"CWE-400: Uncontrolled Resource Consumption\"}]}], \"providerMetadata\": {\"orgId\": \"1bb62c36-49e3-4200-9d77-64a1400537cc\", \"shortName\": \"Go\", \"dateUpdated\": \"2024-05-01T17:10:07.754Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2023-45288\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2025-11-04T18:17:43.583Z\", \"dateReserved\": \"2023-10-06T17:06:26.221Z\", \"assignerOrgId\": \"1bb62c36-49e3-4200-9d77-64a1400537cc\", \"datePublished\": \"2024-04-04T20:37:30.714Z\", \"assignerShortName\": \"Go\"}",
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }
  }
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…