Summary
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 RST_STREAM 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 RST_STREAM 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 RST_STREAM 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 RST_STREAM 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.
Impact
Crafted input forces the application to consume excessive CPU, memory, or other resources, degrading or denying service. Typical impact: denial of service.
CVE-2023-44487 has a CVSS score of 5.3 (Medium). The vector is network-reachable, no privileges required, and no user interaction. A CVSS score reflects the worst-case severity of the vulnerability, not your specific exposure. Whether this affects your application depends on whether the vulnerable code is present and reachable in your environment. A fixed version is available (0.17.0, 11.0.0-M12, 10.1.14, 9.0.81, 8.5.94, 1.28.0, 9.4.53, 10.0.17, 11.0.17, 12.0.2, 10.5.3); upgrading removes the vulnerable code path.
Affected versions
Security releases
Kodem intelligence
Severity tells you how bad this could be in the worst case. It does not tell you whether you are exposed. Exploitability and impact are functions of runtime truth: whether the vulnerable code is present, reachable, and actually executes in your application. A vulnerable package can sit in your dependency tree and never run.
Kodem, an Intelligent Application Security platform, uses runtime intelligence to reveal which vulnerabilities actually execute in production, so teams prioritize the ones that genuinely matter. Kodem's runtime-powered SCA identifies whether this CVE is reachable in your applications.
Remediation advice
golang.org/x/net to 0.17.0 or later; org.apache.tomcat.embed:tomcat-embed-core to 11.0.0-M12 or later; org.apache.tomcat.embed:tomcat-embed-core to 10.1.14 or later; org.apache.tomcat.embed:tomcat-embed-core to 9.0.81 or later; org.apache.tomcat.embed:tomcat-embed-core to 8.5.94 or later; github.com/apple/swift-nio-http2 to 1.28.0 or later; org.eclipse.jetty.http2:http2-common to 9.4.53 or later; org.eclipse.jetty.http2:http2-common to 10.0.17 or later; org.eclipse.jetty.http2:http2-common to 11.0.17 or later; org.eclipse.jetty.http2:http2-server to 9.4.53 or later; org.eclipse.jetty.http2:http2-server to 10.0.17 or later; org.eclipse.jetty.http2:http2-server to 11.0.17 or later; org.eclipse.jetty.http2:jetty-http2-common to 12.0.2 or later; org.eclipse.jetty.http2:jetty-http2-server to 12.0.2 or later; com.typesafe.akka:akka-http-core to 10.5.3 or later; com.typesafe.akka:akka-http-core_2.13 to 10.5.3 or later; com.typesafe.akka:akka-http-core_2.12 to 10.5.3 or later; org.apache.tomcat:tomcat-coyote to 11.0.0-M12 or later; org.apache.tomcat:tomcat-coyote to 10.1.14 or later; org.apache.tomcat:tomcat-coyote to 9.0.81 or later; org.apache.tomcat:tomcat-coyote to 8.5.94 or later
Kodem Kai can prioritize this vulnerability in your dependency tree and generate a fix recommendation.
Frequently Asked Questions
- What is CVE-2023-44487? CVE-2023-44487 is a medium-severity uncontrolled resource consumption vulnerability in golang.org/x/net (go), affecting versions < 0.17.0. It is fixed in 0.17.0, 11.0.0-M12, 10.1.14, 9.0.81, 8.5.94, 1.28.0, 9.4.53, 10.0.17, 11.0.17, 12.0.2, 10.5.3. Crafted input forces the application to consume excessive CPU, memory, or other resources, degrading or denying service.
- How severe is CVE-2023-44487? CVE-2023-44487 has a CVSS score of 5.3 (Medium). This score reflects the worst-case severity of the vulnerability, not your specific exposure. Whether it represents real risk in your environment depends on whether the vulnerable code is present and reachable.
- Which packages are affected by CVE-2023-44487?
golang.org/x/net(go) (versions < 0.17.0)org.apache.tomcat.embed:tomcat-embed-core(maven) (versions >= 11.0.0-M1, < 11.0.0-M12)github.com/apple/swift-nio-http2(swift) (versions < 1.28.0)org.eclipse.jetty.http2:http2-common(maven) (versions >= 9.3.0, < 9.4.53)org.eclipse.jetty.http2:http2-server(maven) (versions >= 9.3.0, < 9.4.53)org.eclipse.jetty.http2:jetty-http2-common(maven) (versions >= 12.0.0, < 12.0.2)org.eclipse.jetty.http2:jetty-http2-server(maven) (versions >= 12.0.0, < 12.0.2)com.typesafe.akka:akka-http-core(maven) (versions < 10.5.3)com.typesafe.akka:akka-http-core_2.13(maven) (versions < 10.5.3)com.typesafe.akka:akka-http-core_2.12(maven) (versions < 10.5.3)com.typesafe.akka:akka-http-core_2.11(maven) (versions <= 10.1.15)org.apache.tomcat:tomcat-coyote(maven) (versions >= 11.0.0-M1, < 11.0.0-M12)
- Is there a fix for CVE-2023-44487? Yes. CVE-2023-44487 is fixed in 0.17.0, 11.0.0-M12, 10.1.14, 9.0.81, 8.5.94, 1.28.0, 9.4.53, 10.0.17, 11.0.17, 12.0.2, 10.5.3. Upgrade to this version or later.
- Is CVE-2023-44487 exploitable, and should I be worried? Whether CVE-2023-44487 is exploitable in your environment depends on whether the vulnerable code is present and reachable. A CVSS score is a worst-case rating; it does not account for your specific deployment, configuration, or usage patterns. Kodem, an Intelligent Application Security platform, uses runtime intelligence to show which vulnerabilities actually execute in production, so you can focus on the ones that represent real risk. Get a demo
- What actually determines whether CVE-2023-44487 is exploitable, and how bad it is? Exploitability and impact are not fixed properties of a CVE. They depend on runtime truth: whether the vulnerable code is present, reachable, and actually executes in your application. A high CVSS score on a dependency that never runs is not the same as real risk. Kodem, an Intelligent Application Security platform, uses runtime intelligence to reveal which vulnerabilities actually execute in production, so teams prioritize the ones that genuinely matter.
- How do I fix CVE-2023-44487?
- Upgrade
golang.org/x/netto 0.17.0 or later - Upgrade
org.apache.tomcat.embed:tomcat-embed-coreto 11.0.0-M12 or later - Upgrade
org.apache.tomcat.embed:tomcat-embed-coreto 10.1.14 or later - Upgrade
org.apache.tomcat.embed:tomcat-embed-coreto 9.0.81 or later - Upgrade
org.apache.tomcat.embed:tomcat-embed-coreto 8.5.94 or later - Upgrade
github.com/apple/swift-nio-http2to 1.28.0 or later - Upgrade
org.eclipse.jetty.http2:http2-commonto 9.4.53 or later - Upgrade
org.eclipse.jetty.http2:http2-commonto 10.0.17 or later - Upgrade
org.eclipse.jetty.http2:http2-commonto 11.0.17 or later - Upgrade
org.eclipse.jetty.http2:http2-serverto 9.4.53 or later - Upgrade
org.eclipse.jetty.http2:http2-serverto 10.0.17 or later - Upgrade
org.eclipse.jetty.http2:http2-serverto 11.0.17 or later - Upgrade
org.eclipse.jetty.http2:jetty-http2-commonto 12.0.2 or later - Upgrade
org.eclipse.jetty.http2:jetty-http2-serverto 12.0.2 or later - Upgrade
com.typesafe.akka:akka-http-coreto 10.5.3 or later - Upgrade
com.typesafe.akka:akka-http-core_2.13to 10.5.3 or later - Upgrade
com.typesafe.akka:akka-http-core_2.12to 10.5.3 or later - Upgrade
org.apache.tomcat:tomcat-coyoteto 11.0.0-M12 or later - Upgrade
org.apache.tomcat:tomcat-coyoteto 10.1.14 or later - Upgrade
org.apache.tomcat:tomcat-coyoteto 9.0.81 or later - Upgrade
org.apache.tomcat:tomcat-coyoteto 8.5.94 or later
- Upgrade