GO-2022-0236

Panic due to large headers in net/http and golang.org/x/net/http/httpguts

At a glance

Published
Updated
CVE
CVE-2021-31525
Aliases
BIT-golang-2021-31525, GHSA-h86h-8ppg-mxmh

Description

A malicious HTTP server or client can cause the net/http client or server to panic. ReadRequest and ReadResponse can hit an unrecoverable panic when reading a very large header (over 7MB on 64-bit architectures, or over 4MB on 32-bit ones). Transport and Client are vulnerable and the program can be made to crash by a malicious server. Server is not vulnerable by default, but can be if the default max header of 1MB is overridden by setting Server.MaxHeaderBytes to a higher value, in which case the program can be made to crash by a malicious client. This also affects golang.org/x/net/http2/h2c and HeaderValuesContainsToken in golang.org/x/net/http/httpguts.

Affected packages

PackageVersions
Go · stdlibintroduced 0, fixed 1.15.12, introduced 1.16.0-0, fixed 1.16.4
Go · golang.org/x/netintroduced 0, fixed 0.0.0-20210428140749-89ef3d95e781

References

Sources

SourceLicence
OSV.devCC-BY 4.0 — Go Vulnerability Database