Vulnerability · Published Apr 4, 2024 · Assigned by Go
CVE-2023-45288HTTP/2 CONTINUATION flood in net/http
High 7.5
In plain English
A high-severity security flaw in net/http from Go standard library. There are no confirmed reports of exploitation so far. The chance it is exploited in the next 30 days is estimated at 89.5% (higher than 99.8% of all known vulnerabilities). Ready-made attack tooling exists: public proof-of-concept code. Fixed versions are available - upgrade the affected package.
Official 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.
Affected packages & fixed versions
| Ecosystem | Package | Fixed in | Advisory |
|---|---|---|---|
| AlmaLinux:8 | delve | 1.21.2-3.module_el8.10.0+3760+4dd778f9 | ALSA-2024:3259 |
| AlmaLinux:8 | delve | 1.20.2-1.module_el8.9.0+3642+43318da8 | ALSA-2024:1962 |
| AlmaLinux:8 | git-lfs | 3.4.1-2.el8_10 | ALSA-2024:3346 |
| AlmaLinux:8 | git-lfs | 3.2.0-3.el8_9 | ALSA-2024:2699 |
| AlmaLinux:9 | git-lfs | 3.4.1-2.el9_4 | ALSA-2024:2724 |
| AlmaLinux:9 | git-lfs | 3.2.0-2.el9_3 | ALSA-2024:2079 |
| AlmaLinux:8 | go-toolset | 1.21.9-1.module_el8.10.0+3840+edaca3c3 | ALSA-2024:3259 |
| AlmaLinux:8 | go-toolset | 1.20.12-1.module_el8.9.0+3728+f1d47c6f | ALSA-2024:1962 |
| AlmaLinux:9 | go-toolset | 1.20.12-4.el9_3 | ALSA-2024:1963 |
| AlmaLinux:9 | go-toolset | 1.21.9-2.el9_4 | ALSA-2024:2562 |
| AlmaLinux:8 | golang | 1.20.12-8.module_el8.9.0+3818+ac9bcae6 | ALSA-2024:1962 |
| AlmaLinux:8 | golang | 1.21.9-1.module_el8.10.0+3840+edaca3c3 | ALSA-2024:3259 |
| AlmaLinux:9 | golang | 1.21.9-2.el9_4 | ALSA-2024:2562 |
| AlmaLinux:9 | golang | 1.20.12-4.el9_3 | ALSA-2024:1963 |
| AlmaLinux:8 | golang-bin | 1.20.12-8.module_el8.9.0+3818+ac9bcae6 | ALSA-2024:1962 |
| AlmaLinux:8 | golang-bin | 1.21.9-1.module_el8.10.0+3840+edaca3c3 | ALSA-2024:3259 |
| AlmaLinux:9 | golang-bin | 1.21.9-2.el9_4 | ALSA-2024:2562 |
| AlmaLinux:9 | golang-bin | 1.20.12-4.el9_3 | ALSA-2024:1963 |
| AlmaLinux:8 | golang-docs | 1.21.9-1.module_el8.10.0+3840+edaca3c3 | ALSA-2024:3259 |
| AlmaLinux:8 | golang-docs | 1.20.12-8.module_el8.9.0+3818+ac9bcae6 | ALSA-2024:1962 |
| AlmaLinux:9 | golang-docs | 1.20.12-4.el9_3 | ALSA-2024:1963 |
| AlmaLinux:9 | golang-docs | 1.21.9-2.el9_4 | ALSA-2024:2562 |
| AlmaLinux:8 | golang-misc | 1.20.12-8.module_el8.9.0+3818+ac9bcae6 | ALSA-2024:1962 |
| AlmaLinux:8 | golang-misc | 1.21.9-1.module_el8.10.0+3840+edaca3c3 | ALSA-2024:3259 |
| AlmaLinux:9 | golang-misc | 1.20.12-4.el9_3 | ALSA-2024:1963 |
| AlmaLinux:9 | golang-misc | 1.21.9-2.el9_4 | ALSA-2024:2562 |
| AlmaLinux:8 | golang-src | 1.21.9-1.module_el8.10.0+3840+edaca3c3 | ALSA-2024:3259 |
| AlmaLinux:8 | golang-src | 1.20.12-8.module_el8.9.0+3818+ac9bcae6 | ALSA-2024:1962 |
| AlmaLinux:9 | golang-src | 1.21.9-2.el9_4 | ALSA-2024:2562 |
| AlmaLinux:9 | golang-src | 1.20.12-4.el9_3 | ALSA-2024:1963 |
| AlmaLinux:8 | golang-tests | 1.20.12-8.module_el8.9.0+3818+ac9bcae6 | ALSA-2024:1962 |
| AlmaLinux:8 | golang-tests | 1.21.9-1.module_el8.10.0+3840+edaca3c3 | ALSA-2024:3259 |
| AlmaLinux:9 | golang-tests | 1.20.12-4.el9_3 | ALSA-2024:1963 |
| AlmaLinux:9 | golang-tests | 1.21.9-2.el9_4 | ALSA-2024:2562 |
| Alpine:v3.21 | forgejo | 1.21.10.0-r0 | ALPINE-CVE-2023-45288 |
| Alpine:v3.22 | forgejo | 1.21.10.0-r0 | ALPINE-CVE-2023-45288 |
| Alpine:v3.23 | forgejo | 1.21.10.0-r0 | ALPINE-CVE-2023-45288 |
| Alpine:v3.24 | forgejo | 1.21.10.0-r0 | ALPINE-CVE-2023-45288 |
| Alpine:v3.20 | go | 1.22.2-r0 | ALPINE-CVE-2023-45288 |
| Alpine:v3.21 | go | 1.22.2-r0 | ALPINE-CVE-2023-45288 |
| Alpine:v3.22 | go | 1.22.2-r0 | ALPINE-CVE-2023-45288 |
| Alpine:v3.23 | go | 1.22.2-r0 | ALPINE-CVE-2023-45288 |
| Alpine:v3.24 | go | 1.22.2-r0 | ALPINE-CVE-2023-45288 |
| Alpine:v3.21 | rclone | 1.67.0-r0 | ALPINE-CVE-2023-45288 |
| Alpine:v3.22 | rclone | 1.67.0-r0 | ALPINE-CVE-2023-45288 |
| Alpine:v3.23 | rclone | 1.67.0-r0 | ALPINE-CVE-2023-45288 |
| Alpine:v3.24 | rclone | 1.67.0-r0 | ALPINE-CVE-2023-45288 |
| Debian:12 | golang-1.19 | no fix listed | DEBIAN-CVE-2023-45288 |
| Debian:12 | golang-golang-x-net | no fix listed | DEBIAN-CVE-2023-45288 |
| Debian:13 | golang-golang-x-net | 1:0.23.0+dfsg- | DEBIAN-CVE-2023-45288 |
| Debian:14 | golang-golang-x-net | 1:0.23.0+dfsg- | DEBIAN-CVE-2023-45288 |
| Go | golang.org/x/net | 0.23.0 | GHSA-4v7x-pqxf-cx7m |
| Go | golang.org/x/net | 0.23.0 | GO-2024-2687 |
| Go | golang.org/x/net/http2 | 0.23.0 | GHSA-4v7x-pqxf-cx7m |
| Go | net/http | 1.22.2 | GHSA-4v7x-pqxf-cx7m |
| Go | net/http | 1.21.9 | GHSA-4v7x-pqxf-cx7m |
| Go | stdlib | 1.21.9, 1.22.2 | GO-2024-2687 |
| Rocky Linux:8 | delve | 0:1.20.2-1.module+el8.9.0+1392+c9f6376a | RLSA-2024:1962 |
| Rocky Linux:8 | git-lfs | 0:3.4.1-2.el8_10 | RLSA-2024:3346 |
| Rocky Linux:8 | git-lfs | 0:3.2.0-3.el8_9 | RLSA-2024:2699 |
| Rocky Linux:9 | git-lfs | 0:3.4.1-2.el9_4 | RLSA-2024:2724 |
| Rocky Linux:8 | go-toolset | 0:1.20.12-1.module+el8.9.0+1725+0ed4fa7f | RLSA-2024:1962 |
| Rocky Linux:8 | golang | 0:1.20.12-8.module+el8.9.0+1787+5672f315 | RLSA-2024:1962 |
| Ubuntu:22.04:LTS | golang-1.17 | 1.17.13-3ubuntu1.3 | USN-7111-1 |
| Ubuntu:22.04:LTS | golang-1.17 | 1.17.13-3ubuntu1.3 | UBUNTU-CVE-2023-45288 |
| Ubuntu:22.04:LTS | golang-1.18 | 1.18.1-1ubuntu1.2 | USN-7109-1 |
| Ubuntu:22.04:LTS | golang-1.18 | 1.18.1-1ubuntu1.2 | UBUNTU-CVE-2023-45288 |
| Ubuntu:22.04:LTS | golang-1.20 | no fix listed | UBUNTU-CVE-2023-45288 |
| Ubuntu:22.04:LTS | golang-1.21 | 1.21.1-1~ubuntu22.04.3 | USN-6886-1 |
| Ubuntu:22.04:LTS | golang-1.21 | 1.21.1-1~ubuntu22.04.3 | UBUNTU-CVE-2023-45288 |
| Ubuntu:24.04:LTS | golang-1.21 | 1.21.9-1ubuntu0.1 | USN-6886-1 |
| Ubuntu:22.04:LTS | golang-1.22 | 1.22.2-2~22.04.1 | USN-6886-1 |
| Ubuntu:24.04:LTS | golang-1.22 | 1.22.2-2ubuntu0.1 | USN-6886-1 |
Affected products (as reported)
| Vendor | Product | Versions |
|---|---|---|
| Go standard library | net/http | 0 – before 1.21.91.22.0-0 – before 1.22.2 |
| golang.org/x/net | golang.org/x/net/http2 | 0 – before 0.23.0 |
References
- https://go.dev/issue/65051
- https://go.dev/cl/576155
- https://groups.google.com/g/golang-announce/c/YgW0sx8mN3M
- https://pkg.go.dev/vuln/GO-2024-2687
- https://security.netapp.com/advisory/ntap-20240419-0009/
- https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/QRYFHIQ6XRKRYBI2F5UESH67BJBQXUPT/
- http://www.openwall.com/lists/oss-security/2024/04/05/4
- http://www.openwall.com/lists/oss-security/2024/04/03/16
- https://www.kb.cert.org/vuls/id/421644