blob: 561ba01b5bd44182d3090da2f819f2dbf3a42205 [file] [log] [blame]
id: GO-2024-2963
modules:
- module: std
versions:
- fixed: 1.21.12
- introduced: 1.22.0-0
- fixed: 1.22.5
vulnerable_at: 1.22.4
packages:
- package: net/http
symbols:
- persistConn.readResponse
derived_symbols:
- Client.CloseIdleConnections
- Client.Do
- Client.Get
- Client.Head
- Client.Post
- Client.PostForm
- Get
- Head
- Post
- PostForm
- Transport.CancelRequest
- Transport.CloseIdleConnections
- Transport.RoundTrip
summary: Denial of service due to improper 100-continue handling in net/http
description: |-
The net/http HTTP/1.1 client mishandled the case where a server responds to a
request with an "Expect: 100-continue" header with a non-informational (200 or
higher) status. This mishandling could leave a client connection in an invalid
state, where the next request sent on the connection will fail.
An attacker sending a request to a net/http/httputil.ReverseProxy proxy can
exploit this mishandling to cause a denial of service by sending "Expect:
100-continue" requests which elicit a non-informational response from the
backend. Each such request leaves the proxy with an invalid connection, and
causes one subsequent request using that connection to fail.
credits:
- Geoff Franks
references:
- fix: https://go.dev/cl/591255
- report: https://go.dev/issue/67555
- web: https://groups.google.com/g/golang-dev/c/t0rK-qHBqzY/m/6MMoAZkMAgAJ
cve_metadata:
id: CVE-2024-24791
cwe: 'CWE 400: Uncontrolled Resource Consumption'
source:
id: go-security-team
created: 2024-07-02T15:43:26.900923-04:00
review_status: REVIEWED