CVE-2022-0618: Denial of service via HTTP/2 HEADERS frames padding
7.5
CVSS Score
3.1
Basic Information
CVE ID
GHSA ID
EPSS Score
0.75655%
CWE
-
Published
6/9/2023
Updated
2/9/2024
KEV Status
No
Technology
Swift
Technical Details
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Package Name | Ecosystem | Vulnerable Versions | First Patched Version |
---|---|---|---|
github.com/apple/swift-nio-http2 | swift | >= 1.0.0, < 1.20 | 1.20 |
Vulnerability Intelligence
Miggo AI
Root Cause Analysis
The vulnerability stemmed from improper handling of padding in HEADERS/PUSH_PROMISE frames. The commit diff shows:
- New state machine transitions (AwaitingPaddingLengthByteParserState) were added to handle padding validation
- Added explicit checks for header.length > 0 when padding flag is set
- The original code in AccumulatingFrameHeaderParserState.process() didn't properly validate that padded frames must have at least 1 byte for the padding length field
- The original AccumulatingPayloadParserState initialization didn't properly handle cases where padding length exceeded remaining payload size
- Added explicit protocolError throws when (header.length <= expectedPadding) in the new logic These changes indicate the vulnerable functions were in the frame header processing and payload initialization paths that handled padding validation.