CVE-2026-59901: Netty Bzip2Decoder Infinite Loop DoS
A crafted bzip2 stream can permanently hang the Netty event-loop thread by trapping it in an infinite loop inside the run-length encoding decoder, taking the entire server offline with a single…
The problem
Netty's Bzip2Decoder (in netty-codec-compression 4.2.x and netty-codec 4.1.x) passes incoming bytes to Bzip2BlockDecompressor.read() on the event-loop thread. The RLE state machine inside that method loops to produce output bytes one at a time. It never yields back to the caller when a specially crafted repeat-count is provided, so the thread spins forever.
Because Netty is event-driven, one stuck event-loop thread means every connection sharing that thread stops being served. A single unauthenticated TCP request carrying a malformed bzip2 block is enough to cause a full denial of service.
The fix
Upgrade to io.netty:netty-codec-compression 4.2.16.Final (or io.netty:netty-codec 4.1.136.Final for the 4.1 branch). There is no configuration workaround; the only option short of patching is to remove Bzip2Decoder from the pipeline entirely if bzip2 support is not required.
Reported by normanmaurer (Norman Maurer, Netty maintainer).
Related research
- high · 7.5CVE-2026-56819CVE-2026-56819: netty-codec-http2 HTTP/2 Decompression ByteBuf Reference-Count Leak (OOM DoS)
- high · 7.5CVE-2026-41695CVE-2026-41695: Spring Data Commons Unbounded Property-Path Cache DoS
- high · 7.5CVE-2026-50559CVE-2026-50559: quarkus-vertx-http Authentication Bypass via Encoded Path Characters
- highCVE-2026-54079CVE-2026-54079: veraPDF validation-model XML External Entity Injection via XFA Stream