GHSA-4grm-h2qv-h6w6: High severity maven/io.netty:netty-codec-http3 vulnerability

Published Jun 15, 2026
·
Updated

Summary A memory exhaustion vulnerability in the Netty HTTP/3 codec allows the creation of an infinite number of blocked streams, which can cause OOM error.

Details The vulnerability exists in io.netty.handler.codec.http3.QpackDecoder#shouldWaitForDynamicTableUpdates:

If a client sends a header referencing a table entry that the server hasn't received yet, the server must pause that stream and wait for the missing entry to arrive. To prevent attackers from exhausting resources by intentionally sending missing references, Netty limits the number of streams that can be blocked at the same time.

However, the check is implemented as:

java if (blockedStreamsCount == maxBlockedStreams - 1) {

If the server enables QPACK dynamic tables (by setting HTTP3SETTINGSQPACKMAXTABLECAPACITY > 0) but does not explicitly configure HTTP3SETTINGSQPACKBLOCKEDSTREAMS, it defaults to 0.

When maxBlockedStreams is 0, the condition evaluates to blockedStreamsCount == -1. Since blockedStreamsCount starts at 0 and only increments, it never equals -1. This bypasses the limit, allowing an attacker to open an infinite number of streams that block indefinitely. Additionally, the QpackDecoder never removes unblocked streams from the blockedStreams map or decrements the counter, meaning the ReadResumptionListener for each blocked stream is kept in memory for the entire lifetime of the connection. This exhausts server memory and crashes the JVM.

Impact Denial of Service. Any server using netty-codec-http3 with QPACK dynamic tables enabled and maxBlockedStreams defaulting to 0 is impacted.

Affected Software

2 affected componentsFixes available
maven/io.netty:netty-codec-http3>=4.2.0.Final<=4.2.13.Final
4.2.15.Final
maven/io.netty:netty-codec-http3>=4.2.0.Final<=4.2.14.Final
4.2.15.Final

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

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

    Fixed in 4.2.15.Final
  2. Configuration

    Explicitly configure HTTP3_SETTINGS_QPACK_BLOCKED_STREAMS to a positive non-zero limit when QPACK dynamic tables are enabled; do not leave it at the default of 0.

    Netty HTTP/3 codec HTTP3_SETTINGS_QPACK_BLOCKED_STREAMS = positive non-zero limit

Event History

Jun 15, 2026
Advisory Published
via GitHub·08:43 PM
Data Sourced
via GitHub·08:43 PM
DescriptionSeverityWeaknessAffected Software

Frequently Asked Questions

1

What is the severity of GHSA-4grm-h2qv-h6w6?

The severity of GHSA-4grm-h2qv-h6w6 is high with a score of 7.5.

2

How do I fix GHSA-4grm-h2qv-h6w6?

To fix GHSA-4grm-h2qv-h6w6, update the Netty HTTP/3 codec to the latest version as recommended in the project's advisories.

3

What kind of vulnerability is addressed in GHSA-4grm-h2qv-h6w6?

GHSA-4grm-h2qv-h6w6 addresses a memory exhaustion vulnerability that can lead to out-of-memory (OOM) errors.

4

What is the potential impact of GHSA-4grm-h2qv-h6w6?

The potential impact of GHSA-4grm-h2qv-h6w6 is the creation of an infinite number of blocked streams that overwhelm memory.

5

Which software is affected by GHSA-4grm-h2qv-h6w6?

GHSA-4grm-h2qv-h6w6 affects the Maven package io.netty:netty-codec-http3.

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