CVE-2026-33871: Netty HTTP/2 CONTINUATION Frame Flood DoS via Zero-Byte Frame Bypass

Published Mar 26, 2026
·
Updated

Summary A remote user can trigger a Denial of Service (DoS) against a Netty HTTP/2 server by sending a flood of CONTINUATION frames. The server's lack of a limit on the number of CONTINUATION frames, combined with a bypass of existing size-based mitigations using zero-byte frames, allows an user to cause excessive CPU consumption with minimal bandwidth, rendering the server unresponsive.

Details The vulnerability exists in Netty's DefaultHttp2FrameReader. When an HTTP/2 HEADERS frame is received without the ENDHEADERS flag, the server expects one or more subsequent CONTINUATION frames. However, the implementation does not enforce a limit on the count of these CONTINUATION frames.

The key issue is located in codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2FrameReader.java. The verifyContinuationFrame() method checks for stream association but fails to implement a frame count limit.

Any user can exploit this by sending a stream of CONTINUATION frames with a zero-byte payload. While Netty has a maxHeaderListSize protection to limit the total size of headers, this check is never triggered by zero-byte frames. The logic effectively evaluates to maxHeaderListSize - 0 < currentSize, which will not trigger the limit until a non-zero byte is added. As a result, the server is forced to process an unlimited number of frames, consuming a CPU thread and monopolizing the connection.

codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2FrameReader.java

verifyContinuationFrame() (lines 381-393) — No frame count check: java private void verifyContinuationFrame() throws Http2Exception { verifyAssociatedWithAStream(); if (headersContinuation == null) { throw connectionError(PROTOCOLERROR, "..."); } if (streamId != headersContinuation.getStreamId()) { throw connectionError(PROTOCOLERROR, "..."); } // NO frame count limit! }

HeadersBlockBuilder.addFragment() (lines 695-723) — Byte limit bypassed by 0-byte frames: java // Line 710-711: This check NEVER fires when len=0 if (headersDecoder.configuration().maxHeaderListSizeGoAway() - len < headerBlock.readableBytes()) { headerSizeExceeded(); // 10240 - 0 < 1 => FALSE always }

When len=0: maxGoAway - 0 < readableBytes → 10240 < 1 → FALSE. The byte limit is never triggered.

Impact This is a CPU-based Denial of Service (DoS). Any service using Netty's default HTTP/2 server implementation is impacted. An unauthenticated user can exhaust server CPU resources and block legitimate users, leading to service unavailability. The low bandwidth requirement for the attack makes it highly practical.

Other sources

Netty is an asynchronous, event-driven network application framework. In versions prior to 4.1.132.Final and 4.2.10.Final, a remote user can trigger a Denial of Service (DoS) against a Netty HTTP/2 server by sending a flood of CONTINUATION frames. The server's lack of a limit on the number of CONTINUATION frames, combined with a bypass of existing size-based mitigations using zero-byte frames, allows an user to cause excessive CPU consumption with minimal bandwidth, rendering the server unresponsive. Versions 4.1.132.Final and 4.2.10.Final fix the issue.

MITRE

Affected Software

5 affected componentsFixes available
maven/io.netty:netty-codec-http2>=4.2.0.Alpha1<4.2.10.Final
4.2.11.Final
maven/io.netty:netty-codec-http2<4.1.132.Final
4.1.132.Final
Netty Netty<4.1.132
Netty Netty>=4.2.0<4.2.10
IBM API Connect V12 OnPrem<=All

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade maven/io.netty:netty-codec-http2 to a version that resolves this vulnerability.

    Fixed in 4.2.11.Final
  2. Upgrade

    Upgrade maven/io.netty:netty-codec-http2 to a version that resolves this vulnerability.

    Fixed in 4.1.132.Final
  3. Upgrade

    Upgrade Netty HTTP/2 DefaultHttp2FrameReader (codec-http2) to a version that resolves this vulnerability.

    Fixed in 4.1.132.Final
  4. Upgrade

    Upgrade Netty HTTP/2 DefaultHttp2FrameReader (codec-http2) to a version that resolves this vulnerability.

    Fixed in 4.2.10.Final

Event History

Mar 26, 2026
Advisory Published
via GitHub·06:49 PM
Data Sourced
via GitHub·06:49 PM
DescriptionWeaknessAffected Software
Mar 27, 2026
CVE Published
via MITRE·07:55 PM
Data Sourced
via MITRE·07:55 PM
DescriptionWeakness
Data Sourced
via NVD·08:16 PM
DescriptionSeverityWeakness
Data Sourced
via NVD·08:16 PM
Affected Software
Data Sourced
via Red Hat·09:02 PM
DescriptionSeverityAffected Software
Jul 7, 2026
Data Sourced
via IBM·12:00 AM
DescriptionAffected Software

Parent advisories

This vulnerability appears in the following advisories.

Free Weekly Intel

Don't miss critical vulnerabilities

Join thousands of security professionals who receive our weekly digest of trending CVEs, zero-days, and exploited vulnerabilities.

No spam. Unsubscribe anytime.

Frequently Asked Questions

1

What is the severity of CVE-2026-33871?

CVE-2026-33871 is classified as a Denial of Service (DoS) vulnerability.

2

How do I fix CVE-2026-33871?

To fix CVE-2026-33871, update to Netty version 4.2.11.Final or 4.1.132.Final.

3

What causes the CVE-2026-33871 vulnerability?

CVE-2026-33871 is caused by a lack of limit on the number of CONTINUATION frames that can be sent to a Netty HTTP/2 server.

4

Who is affected by CVE-2026-33871?

CVE-2026-33871 affects users of the io.netty:netty-codec-http2 package versions prior to 4.2.11.Final or 4.1.132.Final.

5

What is the impact of CVE-2026-33871?

The impact of CVE-2026-33871 is that it allows remote attackers to flood a Netty HTTP/2 server, potentially leading to service disruption.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203