GO-2023-2382

Source
https://pkg.go.dev/vuln/GO-2023-2382
Import Source
https://vuln.go.dev/ID/GO-2023-2382.json
JSON Data
https://api.osv.dev/v1/vulns/GO-2023-2382
Aliases
Related
Published
2023-12-06T16:22:36Z
Modified
2024-05-20T16:03:47Z
Summary
Denial of service via chunk extensions in net/http
Details

A malicious HTTP sender can use chunk extensions to cause a receiver reading from a request or response body to read many more bytes from the network than are in the body.

A malicious HTTP client can further exploit this to cause a server to automatically read a large amount of data (up to about 1GiB) when a handler fails to read the entire body of a request.

Chunk extensions are a little-used HTTP feature which permit including additional metadata in a request or response body sent using the chunked encoding. The net/http chunked encoding reader discards this metadata. A sender can exploit this by inserting a large metadata segment with each byte transferred. The chunk reader now produces an error if the ratio of real body to encoded bytes grows too small.

References
Credits
    • Bartek Nowotarski

Affected packages

Go / stdlib

Package

Affected ranges

Type
SEMVER
Events
Introduced
0Unknown introduced version / All previous versions are affected
Fixed
1.20.12
Introduced
1.21.0-0
Fixed
1.21.5

Ecosystem specific

{
    "imports": [
        {
            "path": "net/http/internal",
            "symbols": [
                "chunkedReader.Read",
                "chunkedReader.beginChunk",
                "readChunkLine"
            ]
        }
    ]
}