CVE-2023-44487: - Rapid Reset HTTP/2 vulnerability
HTTP/2 Rapid reset attack The HTTP/2 protocol allows clients to indicate to the server that a previous stream should be canceled by sending a RSTSTREAM frame. The protocol does not require the client and server to coordinate the cancellation in any way, the client may do it unilaterally. The client may also assume that the cancellation will take effect immediately when the server receives the RSTSTREAM frame, before any other data from that TCP connection is processed.
Abuse of this feature is called a Rapid Reset attack because it relies on the ability for an endpoint to send a RSTSTREAM frame immediately after sending a request frame, which makes the other endpoint start working and then rapidly resets the request. The request is canceled, but leaves the HTTP/2 connection open.
The HTTP/2 Rapid Reset attack built on this capability is simple: The client opens a large number of streams at once as in the standard HTTP/2 attack, but rather than waiting for a response to each request stream from the server or proxy, the client cancels each request immediately.
The ability to reset streams immediately allows each connection to have an indefinite number of requests in flight. By explicitly canceling the requests, the attacker never exceeds the limit on the number of concurrent open streams. The number of in-flight requests is no longer dependent on the round-trip time (RTT), but only on the available network bandwidth.
In a typical HTTP/2 server implementation, the server will still have to do significant amounts of work for canceled requests, such as allocating new stream data structures, parsing the query and doing header decompression, and mapping the URL to a resource. For reverse proxy implementations, the request may be proxied to the backend server before the RSTSTREAM frame is processed. The client on the other hand paid almost no costs for sending the requests. This creates an exploitable cost asymmetry between the server and the client.
Multiple software artifacts implementing HTTP/2 are affected. This advisory was originally ingested from the swift-nio-http2 repo advisory and their original conent follows.
swift-nio-http2 specific advisory swift-nio-http2 is vulnerable to a denial-of-service vulnerability in which a malicious client can create and then reset a large number of HTTP/2 streams in a short period of time. This causes swift-nio-http2 to commit to a large amount of expensive work which it then throws away, including creating entirely new Channels to serve the traffic. This can easily overwhelm an EventLoop and prevent it from making forward progress.
swift-nio-http2 1.28 contains a remediation for this issue that applies reset counter using a sliding window. This constrains the number of stream resets that may occur in a given window of time. Clients violating this limit will have their connections torn down. This allows clients to continue to cancel streams for legitimate reasons, while constraining malicious actors.
Other sources
HTTP/2 contains a rapid reset vulnerability that allows for a distributed denial-of-service attack (DDoS).
— CISA
MITRE: CVE-2023-44487 HTTP/2 Rapid Reset Attack
— Microsoft
NGINX has been patched to mitigate CVE-2023-44487.
— GitLab
The Fortinet Product Security team has evaluated the impact of the vulnerablity HTTP/2 Rapid Reset Attack, listed below:CVE-2023-44487:The HTTP/2 protocol allows a denial of service (server resource consumption) because request cancellation can reset many streams quickly.https://nvd.nist.gov/vuln/detail/CVE-2023-44487
— FortiGuard
The HTTP/2 protocol allows a denial of service (server resource consumption) because request cancellation can reset many streams quickly, as exploited in the wild in August through October 2023.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
debian/nettyto a version that resolves this vulnerability.Fixed in 1:4.1.48-8Fixed in 1:4.1.48-4+deb11u2Fixed in 1:4.1.48-7+deb12u1 - Upgrade
Upgrade
maven/org.apache.tomcat:tomcat-coyoteto a version that resolves this vulnerability.Fixed in 8.5.94 - Upgrade
Upgrade
maven/org.apache.tomcat:tomcat-coyoteto a version that resolves this vulnerability.Fixed in 9.0.81 - Upgrade
Upgrade
maven/org.apache.tomcat:tomcat-coyoteto a version that resolves this vulnerability.Fixed in 10.1.14 - Upgrade
Upgrade
maven/org.apache.tomcat:tomcat-coyoteto a version that resolves this vulnerability.Fixed in 11.0.0-M12 - Upgrade
Upgrade
maven/com.typesafe.akka:akka-http-core_2.12to a version that resolves this vulnerability.Fixed in 10.5.3 - Upgrade
Upgrade
maven/com.typesafe.akka:akka-http-core_2.13to a version that resolves this vulnerability.Fixed in 10.5.3 - Upgrade
Upgrade
maven/com.typesafe.akka:akka-http-coreto a version that resolves this vulnerability.Fixed in 10.5.3 - Upgrade
Upgrade
maven/org.eclipse.jetty.http2:jetty-http2-serverto a version that resolves this vulnerability.Fixed in 12.0.2 - Upgrade
Upgrade
maven/org.eclipse.jetty.http2:jetty-http2-commonto a version that resolves this vulnerability.Fixed in 12.0.2 - Upgrade
Upgrade
maven/org.eclipse.jetty.http2:http2-serverto a version that resolves this vulnerability.Fixed in 11.0.17 - Upgrade
Upgrade
maven/org.eclipse.jetty.http2:http2-serverto a version that resolves this vulnerability.Fixed in 10.0.17 - Upgrade
Upgrade
maven/org.eclipse.jetty.http2:http2-serverto a version that resolves this vulnerability.Fixed in 9.4.53 - Upgrade
Upgrade
maven/org.eclipse.jetty.http2:http2-commonto a version that resolves this vulnerability.Fixed in 11.0.17 - Upgrade
Upgrade
maven/org.eclipse.jetty.http2:http2-commonto a version that resolves this vulnerability.Fixed in 10.0.17 - Upgrade
Upgrade
maven/org.eclipse.jetty.http2:http2-commonto a version that resolves this vulnerability.Fixed in 9.4.53 - Upgrade
Upgrade
swift/github.com/apple/swift-nio-http2to a version that resolves this vulnerability.Fixed in 1.28.0 - Upgrade
Upgrade
maven/org.apache.tomcat.embed:tomcat-embed-coreto a version that resolves this vulnerability.Fixed in 8.5.94 - Upgrade
Upgrade
maven/org.apache.tomcat.embed:tomcat-embed-coreto a version that resolves this vulnerability.Fixed in 9.0.81 - Upgrade
Upgrade
maven/org.apache.tomcat.embed:tomcat-embed-coreto a version that resolves this vulnerability.Fixed in 10.1.14 - Upgrade
Upgrade
maven/org.apache.tomcat.embed:tomcat-embed-coreto a version that resolves this vulnerability.Fixed in 11.0.0-M12 - Upgrade
Upgrade
go/google.golang.org/grpcto a version that resolves this vulnerability.Fixed in 1.56.3 - Upgrade
Upgrade
go/google.golang.org/grpcto a version that resolves this vulnerability.Fixed in 1.57.1 - Upgrade
Upgrade
go/google.golang.org/grpcto a version that resolves this vulnerability.Fixed in 1.58.3 - Upgrade
Upgrade
go/golang.org/x/netto a version that resolves this vulnerability.Fixed in 0.17.0 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 20.1.0 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 2.0.0 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 17.1.1.3 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 16.1.4.3 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 15.1.10.4 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 30 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 3.3.1 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 10.0.19045.3570Patch KB5031356 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 10.0.14393.6351Patch KB5031362 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 10.0.22000.2538Patch KB5031358 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 10.0.22621.2428Patch KB5031354 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 10.0.19044.3570Patch KB5031356 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 10.0.20348.2031Patch KB5031364 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 10.0.17763.4974Patch KB5031361 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 17.4.13 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 7.0.13 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 17.6.9 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 6.0.24 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 17.7.6 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 17.2.21 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 6.0.24Patch KB5032874 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 7.0.13Patch KB5032875 - Upgrade
Upgrade
redhat/golangto a version that resolves this vulnerability.Fixed in 1.21.3 - Upgrade
Upgrade
redhat/golangto a version that resolves this vulnerability.Fixed in 1.20.10 - Upgrade
Upgrade
redhat/tomcatto a version that resolves this vulnerability.Fixed in 11.0.0 - Upgrade
Upgrade
redhat/tomcatto a version that resolves this vulnerability.Fixed in 10.1.14 - Upgrade
Upgrade
redhat/tomcatto a version that resolves this vulnerability.Fixed in 9.0.81 - Upgrade
Upgrade
redhat/tomcatto a version that resolves this vulnerability.Fixed in 8.5.94 - Upgrade
Upgrade
redhat/nghttp2to a version that resolves this vulnerability.Fixed in 1.57.0 - Upgrade
Upgrade
redhat/nettyto a version that resolves this vulnerability.Fixed in 4.1.100. - Upgrade
Upgrade
debian/dnsdistto a version that resolves this vulnerability.Fixed in 1.9.15-0+deb13u1Fixed in 2.1.0-2 - Upgrade
Upgrade
debian/haproxyto a version that resolves this vulnerability.Fixed in 2.2.9-2+deb11u6Fixed in 2.2.9-2+deb11u7Fixed in 2.6.12-1+deb12u3Fixed in 3.0.11-1+deb13u3Fixed in 3.2.21-1 - Upgrade
Upgrade
debian/jetty9to a version that resolves this vulnerability.Fixed in 9.4.50-4+deb11u2Fixed in 9.4.57-0+deb11u3Fixed in 9.4.57-1.1~deb12u1Fixed in 9.4.57-1.1~deb13u1Fixed in 9.4.58-2 - Upgrade
Upgrade
debian/nettyto a version that resolves this vulnerability.Fixed in 1:4.1.48-4+deb11u2Fixed in 1:4.1.48-4+deb11u3Fixed in 1:4.1.48-7+deb12u2Fixed in 1:4.1.48-10+deb13u1Fixed in 1:4.1.48-16 - Upgrade
Upgrade
debian/nghttp2to a version that resolves this vulnerability.Fixed in 1.43.0-1+deb11u1Fixed in 1.43.0-1+deb11u3Fixed in 1.52.0-1+deb12u3Fixed in 1.64.0-1.1+deb13u1Fixed in 1.69.0-1 - Upgrade
Upgrade
debian/nginxto a version that resolves this vulnerability.Fixed in 1.26.3-3+deb13u7Fixed in 1.30.1-7 - Upgrade
Upgrade
debian/tomcat10to a version that resolves this vulnerability.Fixed in 10.1.55-1~deb12u1Fixed in 10.1.55-1~deb13u1Fixed in 10.1.55-1 - Upgrade
Upgrade
debian/tomcat9to a version that resolves this vulnerability.Fixed in 9.0.43-2~deb11u10Fixed in 9.0.118-0+deb11u1Fixed in 9.0.70-2Fixed in 9.0.95-1Fixed in 9.0.118-1 - Upgrade
Upgrade
debian/trafficserverto a version that resolves this vulnerability.Fixed in 8.1.10+ds-1~deb11u1Fixed in 8.1.11+ds-0+deb11u2Fixed in 9.2.5+ds-0+deb12u4Fixed in 9.2.5+ds-1 - Upgrade
Upgrade
debian/varnishto a version that resolves this vulnerability.Fixed in 7.7.0-3+deb13u1 - Upgrade
Upgrade
swift-nio-http2to a version that resolves this vulnerability.Fixed in 1.28 - Compensating control
If mitigations are unavailable for the affected product, discontinue use of the product (per advisory text: discontinue use if mitigations are unavailable).
Event History
Peer vulnerabilities
Found alongside the following vulnerabilities.
Frequently Asked Questions
What is the severity of CVE-2023-44487?
CVE-2023-44487 has been classified with a critical severity rating due to its potential for exploitation through rapid reset attacks in the HTTP/2 protocol.
How do I fix CVE-2023-44487?
To remediate CVE-2023-44487, users should apply the security patches and updates provided by their software vendors for affected products or libraries.
What products are affected by CVE-2023-44487?
CVE-2023-44487 affects multiple Microsoft Windows versions, .NET, various Debian packages, and notable server and application software relying on HTTP/2.
Can CVE-2023-44487 be exploited remotely?
Yes, attackers can exploit CVE-2023-44487 remotely to disrupt services by sending malicious HTTP/2 requests that trigger rapid stream resets.
What is the recommended action for administrators regarding CVE-2023-44487?
Administrators should prioritize assessing their environments for affected software, applying available updates immediately, and monitoring for suspicious activity.