HTTP/2 Stream Cancellation Attack
Medium5.3CVE-2023-44487 · Published Oct 10, 2023
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 `Channel`s 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.
Affected versions
| Package | Affected | Fixed in |
|---|---|---|
| swift-nio-http2 Product | < 1.28.0 | 1.28.0 |
Details and references
- CVSS 3.1
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
- Severity from
- GitHub (reviewed advisory)
- Weakness
- CWE-400
More Apple advisories
All Apple| Date | Advisory | Severity | Fixed in |
|---|---|---|---|
| Sep 272022 | Improper Neutralization of CRLF Sequences in HTTP Headers ('HTTP Response Splitting') in swift-nio | Medium5.3 | 2.42.0 |
| Sep 202022 | Improper detection of complete HTTP body decompression | High7.5 | 1.14.0 |
| Mar 102022 | Apple: denial of service | High7.5 | 1.20 |
| Feb 112022 | Apple: denial of service | High7.5 | 1.19.2 |
| Feb 112022 | Apple: denial of service | High7.5 | 1.19.2 |
| Feb 112022 | Apple: denial of service | High7.5 | 1.19.2 |