CVE-2026-55833
ADVISORY - githubSummary
Summary
Netty SPDY header decoding continues inflating zlib-compressed header blocks after the raw header parser has already exceeded maxHeaderSize and marked the frame truncated. At commit b2d2137c4404af425bf9d5d601a62576f5c06925, a 12,253-byte compressed SPDY header block can declare and inflate a 12 MiB header-name field with maxHeaderSize=16, forcing compression-amplified decode and skip work in a reachable SpdyFrameCodec pipeline.
PoC
run with:
bash ./poc/run.sh
expected output:
NETTY_SPDY_ZLIB_DECODED_AFTER_LIMIT_TRIGGERED compressed_bytes=12253 declared_name_length=12582912 max_header_size=16 truncated=true invalid=false
The fingerprint means the compressed input was fully consumed while the raw header parser ended with truncated=true and invalid=false after processing the oversized decoded name. That specific state distinguishes this bug from a generic setup failure: the maxHeaderSize guard fired, but the zlib/raw decode path still inflated and skipped the full 12 MiB declared name.
Impact
A remote unauthenticated peer that can speak SPDY to a Netty pipeline containing SpdyFrameCodec can send a small compressed HEADERS block that expands into much larger raw header data after the configured maxHeaderSize limit has already been exceeded. The attack requires a reachable SPDY codec, ordinary transport setup such as TCP and optional TLS, and no independent compressed-frame-size or connection-rate limit ahead of SpdyFrameCodec. The satisfied protocol guards are straightforward: the HEADERS frame uses a nonzero stream id and length >= 4, the decoder factory selects the zlib decoder, the payload uses the SPDY dictionary, and the raw block appends a zero-length value so the already-truncated frame reaches END_HEADER_BLOCK. The user-visible effect is denial of service through compression-amplified CPU and allocation churn.
Common Weakness Enumeration (CWE)
Uncontrolled Resource Consumption
GitHub
3.9
CVSS SCORE
7.5highDebian
-
Ubuntu
-
CVSS SCORE
N/AmediumChainguard
CGA-7fgq-q63w-h255
-
minimos
MINI-26jw-4vgx-p8h8
-
minimos
MINI-2hqj-pfrc-4p84
-
minimos
MINI-2m96-487m-j7hx
-
minimos
MINI-2wgx-wc69-q47g
-
minimos
MINI-2xwg-pq9x-hwj6
-
minimos
MINI-3mrf-cj2w-jcj7
-
minimos
MINI-46g7-6pfg-457p
-
minimos
MINI-48h7-q7xx-fwcm
-
minimos
MINI-4c28-pm55-f938
-
minimos
MINI-4f36-vc26-hhvm
-
minimos
MINI-4wmr-7g6q-jpfr
-
minimos
MINI-56hv-jvf6-v8v5
-
minimos
MINI-5w5h-qxgf-xp7r
-
minimos
MINI-62gc-c934-2mw8
-
minimos
MINI-6ph3-w6h9-w5gh
-
minimos
MINI-77qv-xx4r-q6h4
-
minimos
MINI-7c39-54qx-hc6h
-
minimos
MINI-7qhm-38xq-hq92
-
minimos
MINI-87r4-hfrw-fcfj
-
minimos
MINI-8jxq-mhmx-m47r
-
minimos
MINI-9h48-v365-3gx8
-
minimos
MINI-cw6h-qg8r-r66c
-
minimos
MINI-g4cr-m5jv-j8mf
-
minimos
MINI-gw5m-qm6m-59rh
-
minimos
MINI-hx64-6j82-9x9h
-
minimos
MINI-j248-wwq4-6fxp
-
minimos
MINI-j63q-58g3-4vw4
-
minimos
MINI-j73r-c56p-hg6j
-
minimos
MINI-jhhv-84cq-w3j3
-
minimos
MINI-p56v-h2gh-7h28
-
minimos
MINI-pcrp-fmq4-wcc4
-
minimos
MINI-q35j-c57v-8w46
-
minimos
MINI-q75j-2gqf-g9cr
-
minimos
MINI-qj8f-78fq-76xg
-
minimos
MINI-qq8p-2hmh-9hpq
-
minimos
MINI-qw9v-x2q9-9r85
-
minimos
MINI-rghc-7g6r-7jw4
-
minimos
MINI-vpj2-335r-r285
-
minimos
MINI-w7fq-c934-829q
-
minimos
MINI-wj2w-3hm9-r49x
-
minimos
MINI-wjx7-xj4r-9hmq
-
minimos
MINI-wqjh-pxfj-qf5x
-
minimos
MINI-x75r-xfcm-27rm
-
minimos
MINI-x7m5-hjx8-qh4f
-
minimos
MINI-xprp-pqwx-4xcc
-
minimos
MINI-xxg4-82pp-4jwq
-