CVE-2026-42582
Netty: HTTP/3 QPACK literal unbounded allocation
Netty is an asynchronous, event-driven network application framework. Prior to 4.2.13.Final, when decoding header blocks, the non-Huffman branch of io.netty.handler.codec.http3.QpackDecoder#decodeHuffmanEncodedLiteral may execute new byte[length] for a string literal before verifying that length bytes are actually present in the compressed field section. The wire encoding allows a very large length to be expressed in few bytes. There is no check that length <= in.readableBytes() before new byte[length]. This vulnerability is fixed in 4.2.13.Final.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
7.5
Netty: HTTP/3 QPACK literal unbounded allocation
Netty is an asynchronous, event-driven network application framework. Prior to 4.2.13.Final, when decoding header blocks, the non-Huffman branch of io.netty.handler.codec.http3.QpackDecoder#decodeHuffmanEncodedLiteral may execute new byte[length] for a string literal before verifying that length bytes are actually present in the compressed field section. The wire encoding allows a very large length to be expressed in few bytes. There is no check that length <= in.readableBytes() before new byte[length]. This vulnerability is fixed in 4.2.13.Final.
- Record
CVE-2026-42582- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-770, CWE-789
- Updated
- 2026-11-02
EUVDEUVD-2026-30125
7.5
Netty is an asynchronous, event-driven network application framework. Prior to 4.2.13.Final, when decoding header blocks, the non-Huffman branch of io.netty.handler.codec.http3.QpackDecoder#decodeHuffmanEncodedLiteral may execute new byte[length] for a string literal before verifying that length bytes are actually present in the compressed field section. The wire encoding allows a very large length to be expressed in few bytes. There is no check that length <= in.readableBytes() before new byte[length]. This vulnerability is fixed in 4.2.13.Final.
- Record
EUVD-2026-30125- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-2c5c-chwr-9hqw
7.5
Netty HTTP/3 QPACK literal unbounded allocation
Summary
When Netty decodes HTTP/3 headers, it sometimes runs new byte[length] using a length from the wire before checking that many bytes are really there. A small malicious header can claim a huge length (on the order of a gigabyte).
Details
When decoding header blocks, the non-Huffman branch of io.netty.handler.codec.http3.QpackDecoder#decodeHuffmanEncodedLiteral may execute new byte[length] for a string literal before verifying that length bytes are actually present in the compressed field section. The wire encoding allows a very large length to be expressed in few bytes. There is no check that length <= in.readableBytes() before new byte[length].
PoC
The test below constructs a small HTTP/3 HEADERS frame whose QPACK section decodes to a ~1 GiB non-Huffman name length and is used to observe server-side failure; it illustrates how little wire data can target new byte[length].
@Test
public void test() throws Exception {
EventLoopGroup group = new MultiThreadIoEventLoopGroup(1, NioIoHandler.newFactory());
try {
X509Bundle cert = new CertificateBuilder()
.subject("cn=localhost")
.setIsCertificateAuthority(true)
.buildSelfSigned();
QuicSslContext serverContext = QuicSslContextBuilder.forServer(cert.toTempPrivateKeyPem(), null, cert.toTempCertChainPem())
.applicationProtocols(Http3.supportedApplicationProtocols())
.build();
AtomicReference<Throwable> serverErrors = new AtomicReference<>();
CountDownLatch serverConnectionClosed = new CountDownLatch(1);
ChannelHandler serverCodec = Http3.newQuicServerCodecBuilder()
.sslContext(serverContext)
.maxIdleTimeout(5000, TimeUnit.MILLISECONDS)
.initialMaxData(10_000_000)
.initialMaxStreamDataBidirectionalLocal(1_000_000)
.initialMaxStreamDataBidirectionalRemote(1_000_000)
.initialMaxStreamsBidirectional(100)
.tokenHandler(InsecureQuicTokenHandler.INSTANCE)
.handler(new ChannelInitializer<QuicChannel>() {
@Override
protected void initChannel(QuicChannel ch) {
ch.closeFuture().addListener(f -> serverConnectionClosed.countDown());
ch.pipeline().addLast(new Http3ServerConnectionHandler(
new ChannelInboundHandlerAdapter() {
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
if (cause instanceof DecoderException) {
serverErrors.set(cause.getCause());
} else {
serverErrors.set(cause);
}
}
}));
}
})
.build();
Channel server = new Bootstrap()
.group(group)
.channel(NioDatagramChannel.class)
.handler(serverCodec)
.bind("127.0.0.1", 0)
.sync()
.channel();
QuicSslContext clientContext = QuicSslContextBuilder.forClient()
.trustManager(InsecureTrustManagerFactory.INSTANCE)
.applicationProtocols(Http3.supportedApplicationProtocols())
.build();
ChannelHandler clientCodec = Http3.newQuicClientCodecBuilder()
.sslContext(clientContext)
.maxIdleTimeout(5000,…
- Record
GHSA-2c5c-chwr-9hqw- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-770, CWE-789
- Updated
- 2026-11-02
NVD
7.5
Netty is an asynchronous, event-driven network application framework. Prior to 4.2.13.Final, when decoding header blocks, the non-Huffman branch of io.netty.handler.codec.http3.QpackDecoder#decodeHuffmanEncodedLiteral may execute new byte[length] for a string literal before verifying that length bytes are actually present in the compressed field section. The wire encoding allows a very large length to be expressed in few bytes. There is no check that length <= in.readableBytes() before new byte[length]. This vulnerability is fixed in 4.2.13.Final.
- Record
CVE-2026-42582- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-770, CWE-789
- Updated
- 2026-11-02
OSV
7.5
Netty: HTTP/3 QPACK literal unbounded allocation
Netty is an asynchronous, event-driven network application framework. Prior to 4.2.13.Final, when decoding header blocks, the non-Huffman branch of io.netty.handler.codec.http3.QpackDecoder#decodeHuffmanEncodedLiteral may execute new byte[length] for a string literal before verifying that length bytes are actually present in the compressed field section. The wire encoding allows a very large length to be expressed in few bytes. There is no check that length <= in.readableBytes() before new byte[length]. This vulnerability is fixed in 4.2.13.Final.
- Record
CVE-2026-42582- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-770, CWE-789
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-42582
7.5
Netty is an asynchronous, event-driven network application framework. Prior to 4.2.13.Final, when decoding header blocks, the non-Huffman branch of io.netty.handler.codec.http3.QpackDecoder#decodeHuffmanEncodedLiteral may execute new byte[length] for a string literal before verifying that length bytes are actually present in the compressed field section. The wire encoding allows a very large length to be expressed in few bytes. There is no check that length <= in.readableBytes() before new byte[length]. This vulnerability is fixed in 4.2.13.Final.
- Record
DEBIAN-CVE-2026-42582- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
Show 4 moreShow less
OSVGHSA-2c5c-chwr-9hqw
7.5
Netty HTTP/3 QPACK literal unbounded allocation
Summary
When Netty decodes HTTP/3 headers, it sometimes runs new byte[length] using a length from the wire before checking that many bytes are really there. A small malicious header can claim a huge length (on the order of a gigabyte).
Details
When decoding header blocks, the non-Huffman branch of io.netty.handler.codec.http3.QpackDecoder#decodeHuffmanEncodedLiteral may execute new byte[length] for a string literal before verifying that length bytes are actually present in the compressed field section. The wire encoding allows a very large length to be expressed in few bytes. There is no check that length <= in.readableBytes() before new byte[length].
PoC
The test below constructs a small HTTP/3 HEADERS frame whose QPACK section decodes to a ~1 GiB non-Huffman name length and is used to observe server-side failure; it illustrates how little wire data can target new byte[length].
@Test
public void test() throws Exception {
EventLoopGroup group = new MultiThreadIoEventLoopGroup(1, NioIoHandler.newFactory());
try {
X509Bundle cert = new CertificateBuilder()
.subject("cn=localhost")
.setIsCertificateAuthority(true)
.buildSelfSigned();
QuicSslContext serverContext = QuicSslContextBuilder.forServer(cert.toTempPrivateKeyPem(), null, cert.toTempCertChainPem())
.applicationProtocols(Http3.supportedApplicationProtocols())
.build();
AtomicReference<Throwable> serverErrors = new AtomicReference<>();
CountDownLatch serverConnectionClosed = new CountDownLatch(1);
ChannelHandler serverCodec = Http3.newQuicServerCodecBuilder()
.sslContext(serverContext)
.maxIdleTimeout(5000, TimeUnit.MILLISECONDS)
.initialMaxData(10_000_000)
.initialMaxStreamDataBidirectionalLocal(1_000_000)
.initialMaxStreamDataBidirectionalRemote(1_000_000)
.initialMaxStreamsBidirectional(100)
.tokenHandler(InsecureQuicTokenHandler.INSTANCE)
.handler(new ChannelInitializer<QuicChannel>() {
@Override
protected void initChannel(QuicChannel ch) {
ch.closeFuture().addListener(f -> serverConnectionClosed.countDown());
ch.pipeline().addLast(new Http3ServerConnectionHandler(
new ChannelInboundHandlerAdapter() {
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
if (cause instanceof DecoderException) {
serverErrors.set(cause.getCause());
} else {
serverErrors.set(cause);
}
}
}));
}
})
.build();
Channel server = new Bootstrap()
.group(group)
.channel(NioDatagramChannel.class)
.handler(serverCodec)
.bind("127.0.0.1", 0)
.sync()
.channel();
QuicSslContext clientContext = QuicSslContextBuilder.forClient()
.trustManager(InsecureTrustManagerFactory.INSTANCE)
.applicationProtocols(Http3.supportedApplicationProtocols())
.build();
ChannelHandler clientCodec = Http3.newQuicClientCodecBuilder()
.sslContext(clientContext)
.maxIdleTimeout(5000,…
- Record
GHSA-2c5c-chwr-9hqw- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-770, CWE-789
- Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-42582
7.5
Netty is an asynchronous, event-driven network application framework. Prior to 4.2.13.Final, when decoding header blocks, the non-Huffman branch of io.netty.handler.codec.http3.QpackDecoder#decodeHuffmanEncodedLiteral may execute new byte[length] for a string literal before verifying that length bytes are actually present in the compressed field section. The wire encoding allows a very large length to be expressed in few bytes. There is no check that length <= in.readableBytes() before new byte[length]. This vulnerability is fixed in 4.2.13.Final.
- Record
UBUNTU-CVE-2026-42582- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVopenSUSE-SU-2026:10795-1 No score
netty-4.1.133-1.1 on GA media
These are all security issues fixed in the netty-4.1.133-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:10795-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:2308-1 No score
Security update for netty, netty-tcnative
This update for netty, netty-tcnative fixes the following issues
- CVE-2026-41417: missing validations leads to HTTP request smuggling and RTSP request injection via start-line
injection in
DefaultHttpRequest.setUri()(bsc#1264350). - CVE-2026-42578: HTTP Header Injection via HttpProxyHandler Disabled Validation in Netty (bsc#1265243).
- CVE-2026-42579: DNS codec does not enforce RFC 1035 domain name constraints during either encoding or decoding (bsc#1265272).
- CVE-2026-42580: chunk size parser silently overflows int and enables request smuggling attacks (bsc#1265273).
- CVE-2026-42581: TE+CL header coexistence in HTTP/1.0 requests bypasses smuggling sanitization (bsc#1265277).
- CVE-2026-42583: resource exhaustion and possible denial of service via
Lz4FrameDecoder(bsc#1265279). - CVE-2026-42584: improper handling of inbound responses in
HttpClientCodeccan lead to response desynchronization (bsc#1265280). - CVE-2026-42585: Netty is an asynchronous, event-driven network application framework (bsc#1265292).
- CVE-2026-42586: CRLF Injection in Netty Redis Codec Encoder (bsc#1265245).
- CVE-2026-42587: HttpContentDecompressor maxAllocation bypass via Content-Encoding: br/zstd/snappy enables decompression bomb DoS (bsc#1265246).
- CVE-2026-44248: Netty is an asynchronous, event-driven network application framework (bsc#1265294).
- CVE-2026-42582: HTTP/3 QPACK literal unbounded allocation (bsc#1265318).
Changes for netty:
- Upgrade to upstream version 4.1.133
- Record
SUSE-SU-2026:2308-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
io.netty:netty-codec-http3Maven |
4.2.0.Final to 4.2.12.Final | 4.2.13.Final |
nettyDebian:12 |
All versions, plus listed versions 1:4.1.48-101:4.1.48-111:4.1.48-121:4.1.48-131:4.1.48-14 Show 7 moreShow less1:4.1.48-151:4.1.48-161:4.1.48-71:4.1.48-7+deb12u11:4.1.48-7+deb12u21:4.1.48-81:4.1.48-9 |
None known |
nettyDebian:13 |
All versions, plus listed versions 1:4.1.48-101:4.1.48-10+deb13u11:4.1.48-111:4.1.48-121:4.1.48-131:4.1.48-141:4.1.48-151:4.1.48-16 |
None known |
nettyDebian:14 |
All versions, plus listed versions 1:4.1.48-101:4.1.48-111:4.1.48-121:4.1.48-131:4.1.48-141:4.1.48-151:4.1.48-16 |
None known |
io.netty:netty-codec-http3Maven |
4.2.0.Final up to 4.2.13.Final, plus listed versions 4.2.10.Final4.2.11.Final4.2.12.Final4.2.2.Final4.2.3.Final Show 6 moreShow less4.2.4.Final4.2.5.Final4.2.6.Final4.2.7.Final4.2.8.Final4.2.9.Final |
4.2.13.Final |
netty-tcnativeSUSE:Linux Enterprise Module for Development Tools 15 SP7 |
before 2.0.77-150200.3.39.1 | 2.0.77-150200.3.39.1 |
nettySUSE:Linux Enterprise Module for Package Hub 15 SP7 |
before 4.1.133-150200.4.46.1 | 4.1.133-150200.4.46.1 |
netty-tcnativeSUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS |
before 2.0.77-150200.3.39.1 | 2.0.77-150200.3.39.1 |
netty-tcnativeSUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS |
before 2.0.77-150200.3.39.1 | 2.0.77-150200.3.39.1 |
netty-tcnativeSUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS |
before 2.0.77-150200.3.39.1 | 2.0.77-150200.3.39.1 |
Show 8 moreShow less
| Package | Affected | Fixed |
|---|---|---|
netty-tcnativeSUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS |
before 2.0.77-150200.3.39.1 | 2.0.77-150200.3.39.1 |
netty-tcnativeSUSE:Linux Enterprise Server 15 SP4-LTSS |
before 2.0.77-150200.3.39.1 | 2.0.77-150200.3.39.1 |
netty-tcnativeSUSE:Linux Enterprise Server 15 SP5-LTSS |
before 2.0.77-150200.3.39.1 | 2.0.77-150200.3.39.1 |
netty-tcnativeSUSE:Linux Enterprise Server 15 SP6-LTSS |
before 2.0.77-150200.3.39.1 | 2.0.77-150200.3.39.1 |
netty-tcnativeSUSE:Linux Enterprise Server for SAP Applications 15 SP4 |
before 2.0.77-150200.3.39.1 | 2.0.77-150200.3.39.1 |
netty-tcnativeSUSE:Linux Enterprise Server for SAP Applications 15 SP5 |
before 2.0.77-150200.3.39.1 | 2.0.77-150200.3.39.1 |
netty-tcnativeSUSE:Linux Enterprise Server for SAP Applications 15 SP6 |
before 2.0.77-150200.3.39.1 | 2.0.77-150200.3.39.1 |
nettyopenSUSE:Tumbleweed |
before 4.1.133-1.1 | 4.1.133-1.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected | ||
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-42582 is a high vulnerability (CVSS 7.5) in Netty, published May 7, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.44%, the 38th percentile. Fixed in io.netty:netty-codec-http3 4.2.13.Final.
References
github.com/netty/netty/security/advisories/GHSA-2c5c-chwr-9hqw
nvd.nist.gov/vuln/detail/CVE-2026-42582
github.com/advisories/GHSA-2c5c-chwr-9hqw
github.com/CVEProject/cvelistV5/tree/main/cves/2026/42xxx/CVE-2026-42582.json
security-tracker.debian.org/tracker/CVE-2026-42582
github.com/netty/netty
Show 27 moreShow less
suse.com/support/update/announcement/2026/suse-su-20262308-1
bugzilla.suse.com/1264350
bugzilla.suse.com/1265243
bugzilla.suse.com/1265245
bugzilla.suse.com/1265246
bugzilla.suse.com/1265272
bugzilla.suse.com/1265273
bugzilla.suse.com/1265277
bugzilla.suse.com/1265279
bugzilla.suse.com/1265280
bugzilla.suse.com/1265292
bugzilla.suse.com/1265294
bugzilla.suse.com/1265318
suse.com/security/cve/CVE-2026-41417
suse.com/security/cve/CVE-2026-42578
suse.com/security/cve/CVE-2026-42579
suse.com/security/cve/CVE-2026-42580
suse.com/security/cve/CVE-2026-42581
suse.com/security/cve/CVE-2026-42582
suse.com/security/cve/CVE-2026-42583
suse.com/security/cve/CVE-2026-42584
suse.com/security/cve/CVE-2026-42585
suse.com/security/cve/CVE-2026-42586
suse.com/security/cve/CVE-2026-42587
suse.com/security/cve/CVE-2026-44248
ubuntu.com/security/CVE-2026-42582
cve.org/CVERecord?id=CVE-2026-42582
Left out here: the rest of 2 source descriptions. The JSON record has them.