GitHub Advisoryadvisory · Go

GHSA-4v7x-pqxf-cx7m net/http, x/net/http2: close connections when receiving too many headers

MEDIUM Published 2024-04-04 Modified 2025-11-04 Official page ↗
Aliases
CVE-2023-45288
Ecosystem
Go
Packages
net/http, golang.org/x/net/http2, golang.org/x/net
Severity
Moderate
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
Weaknesses
CWE-400
Reviewed
2024-04-04

Affected packages

• Go net/http: < 1.21.9 → fixed in 1.21.9 • Go golang.org/x/net/http2: < 0.23.0 → fixed in 0.23.0 • Go net/http: >= 1.22.0-0, < 1.22.2 → fixed in 1.22.2 • Go golang.org/x/net: < 0.23.0 → fixed in 0.23.0

Description

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.

Related

Alias · CVE (1)

  • CVE-2023-45288 An attacker may cause an HTTP/2 endpoint to read arbitrary amounts of header data by sending an excessive number of CONTINUATION frames. vulnerability

Weakness · CWE (1)

  • CWE-400 Uncontrolled Resource Consumption weakness

References