CVE-2023-39325: HTTP/2 rapid reset can cause excessive work in net/http

Published Oct 11, 2023
·
Updated

A malicious HTTP/2 client which rapidly creates requests and immediately resets them can cause excessive server resource consumption. While the total number of requests is bounded by the http2.Server.MaxConcurrentStreams setting, resetting an in-progress request allows the attacker to create a new request while the existing one is still executing.

With the fix applied, HTTP/2 servers now bound the number of simultaneously executing handler goroutines to the stream concurrency limit (MaxConcurrentStreams). New requests arriving when at the limit (which can only happen after the client has reset an existing, in-flight request) will be queued until a handler exits. If the request queue grows too large, the server will terminate the connection.

This issue is also fixed in golang.org/x/net/http2 for users manually configuring HTTP/2.

The default stream concurrency limit is 250 streams (requests) per HTTP/2 connection. This value may be adjusted using the golang.org/x/net/http2 package; see the Server.MaxConcurrentStreams setting and the ConfigureServer function.

Other sources

A malicious HTTP/2 client which rapidly creates requests and immediately resets them can cause excessive server resource consumption. While the total number of requests is bounded to the http2.Server.MaxConcurrentStreams setting, resetting an in-progress request allows the attacker to create a new request while the existing one is still executing.

This CVE is specific to golang, but is also tracked as CVE-2023-44487.

Red Hat

HTTP/2 rapid reset can cause excessive work in net/http

Microsoft

Affected Software

72 affected componentsFixes available
go/golang.org/x/net<0.17.0
0.17.0
debian/golang-1.15<=1.15.15-1~deb11u4
debian/golang-1.19<=1.19.8-2
Golang Go>=1.20.0<1.20.10
Golang Go>=1.21.0<1.21.3
Golang Http2 Go<0.17.0
Fedoraproject Fedora=37
Fedoraproject Fedora=38
Fedoraproject Fedora=39
NetApp Astra Trident
NetApp Astra Trident Autosupport
IBM Concert Software<=1.0.0-1.1.0
redhat/golang<1.21.3
1.21.3
redhat/golang<1.20.10
1.20.10
Microsoft azl3 kata-containers-cc 3.2.0.azl3-1
Microsoft cbl2 golang 1.18.8-7
Microsoft azl3 prometheus-adapter 0.11.2-1
Microsoft azl3 application-gateway-kubernetes-ingress 1.7.7-1
Microsoft cbl2 kata-containers 3.2.0.azl2-6
Microsoft azl3 application-gateway-kubernetes-ingress 1.7.2-3
Microsoft azl3 blobfuse2 2.3.0-1
Microsoft azl3 containerized-data-importer 1.57.0-8
Microsoft azl3 containerized-data-importer 1.57.0-14
Microsoft azl3 multus 4.0.2-5
Microsoft azl3 cert-manager 1.11.2-5
Microsoft azl3 etcd 3.5.6-11
Microsoft azl3 coredns 1.9.3-9
Microsoft azl3 git-lfs 3.6.1-1
Microsoft azl3 golang 1.20.7-2
Microsoft azl3 jx 3.10.182-1
Microsoft azl3 cf-cli 8.7.3-2
Microsoft azl3 moby-containerd-cc 1.7.1-5
Microsoft azl3 opa 0.50.2-6
Microsoft azl3 prometheus-adapter 0.12.0-1
Microsoft azl3 vitess 16.0.2-5
Microsoft azl3 packer 1.9.5-1
Microsoft azl3 local-path-provisioner 0.0.24-3
Microsoft azl3 kube-vip-cloud-provider 0.0.10-1
Microsoft azl3 kata-containers-cc 3.2.0.azl4-1
Microsoft azl3 telegraf 1.27.3-3
Microsoft cbl2 golang 1.20.7-2
Microsoft cbl2 telegraf 1.27.3-3
Microsoft cbl2 blobfuse2 2.1.1-1
Microsoft cbl2 moby-compose 2.17.2-5
Microsoft cbl2 moby-containerd 1.6.22-2
Microsoft cbl2 cri-tools 1.28.0-2
Microsoft cbl2 opa 0.50.2-6
Microsoft cbl2 vitess 16.0.2-5
Microsoft cbl2 cert-manager 1.11.2-5
Microsoft cbl2 coredns 1.9.3-9
Microsoft cbl2 moby-containerd-cc 1.7.1-5
Microsoft cbl2 etcd 3.5.6-11
Microsoft azl3 kata-containers 3.2.0.azl4-1
Microsoft cbl2 skopeo 1.12.0-4
Microsoft cbl2 kured 1.9.1-14
Microsoft cbl2 kata-containers-cc 3.2.0.azl2-1
Microsoft cbl2 multus 3.8-12
Microsoft cbl2 git-lfs 3.5.1-1
Microsoft cbl2 kata-containers 3.2.0.azl2-1
Microsoft azl3 packer 1.9.4-1
Microsoft cbl2 prometheus 2.37.9-4
Microsoft cbl2 git-lfs 3.4.1-1
Microsoft cbl2 golang 1.21.6-1
Microsoft cbl2 golang 1.17.13-2
Microsoft azl3 kata-containers 3.2.0.azl3-2
Microsoft azl3 local-path-provisioner 0.0.24-5
Microsoft cbl2 prometheus 2.37.9-2
Microsoft azl3 kube-vip-cloud-provider 0.0.7-1
Microsoft azl3 blobfuse2 2.1.0-4
Microsoft azl3 jx 3.10.116-2
Microsoft azl3 git-lfs 3.4.1-1
Microsoft cbl2 kata-containers-cc 3.2.0.azl2-6

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade go/golang.org/x/net to a version that resolves this vulnerability.

    Fixed in 0.17.0
  2. Upgrade

    Upgrade redhat/golang to a version that resolves this vulnerability.

    Fixed in 1.21.3
  3. Upgrade

    Upgrade redhat/golang to a version that resolves this vulnerability.

    Fixed in 1.20.10
  4. Upgrade

    Upgrade golang/net/http2 to a version that resolves this vulnerability.

    Patch CVE-2023-44487
  5. Configuration

    Adjust HTTP/2 stream concurrency using golang.org/x/net/http2 Server.MaxConcurrentStreams (via ConfigureServer / ConfigureServer function) to limit concurrent handler execution; the default is 250 streams per HTTP/2 connection.

    golang.org/x/net/http2 Server.MaxConcurrentStreams = (set to an appropriate lower concurrency limit)
  6. Compensating control

    Add network/edge controls to limit abusive rapid HTTP/2 connections/requests (rate limiting / WAF / connection limiting) so attackers cannot repeatedly reset in-flight requests to drive excessive server resource consumption.

Event History

Oct 11, 2023
Data Sourced
via Red Hat·04:14 PM
DescriptionSeverityAffected Software
Advisory Published
via GitHub·08:35 PM
CVE Published
via MITRE·09:15 PM
Data Sourced
via MITRE·09:15 PM
DescriptionWeakness
Data Sourced
10:15 PM
DescriptionWeakness
Oct 23, 2023
Data Sourced
via Microsoft·07:00 AM
DescriptionSeverityWeakness
Data Sourced
via Microsoft·07:00 AM
Affected Software
Updated
via Microsoft·07:00 AM
DescriptionSeverity
May 3, 2024
Data Sourced
via Launchpad·02:25 AM
Description
Nov 15, 2024
Data Sourced
via Ubuntu·02:55 AM
RemedyDescriptionSeverityAffected Software
Sep 8, 2025
Data Sourced
via IBM·12:00 AM
DescriptionAffected Software

Parent advisories

This vulnerability appears in the following advisories.

Free Weekly Intel

Don't miss critical vulnerabilities

Join thousands of security professionals who receive our weekly digest of trending CVEs, zero-days, and exploited vulnerabilities.

No spam. Unsubscribe anytime.

Frequently Asked Questions

1

What is the vulnerability ID?

The vulnerability ID is CVE-2023-39325.

2

What can cause excessive server resource consumption?

A malicious HTTP/2 client that rapidly creates requests and immediately resets them can cause excessive server resource consumption.

3

How can the attacker create new requests?

By resetting an in-progress request, the attacker can create a new request.

4

What is the affected software?

The affected software is golang.org/x/net version 0.17.0.

5

Where can I find more information about this vulnerability?

You can find more information about this vulnerability at the following references: [GitHub Issue](https://github.com/golang/go/issues/63417), [Code Change 1](https://go.dev/cl/534215), [Code Change 2](https://go.dev/cl/534235).

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203