CVE-2026-44890: Netty has Unbounded Direct Memory Consumption in its RedisDecoder
Summary An attacker can cause DoS by sending crafted Redis payloads across multiple connections without \r\n. This exhausts the server's direct memory pool (OutOfDirectMemoryError), preventing legitimate connections from being processed.
Details io.netty.handler.codec.redis.RedisDecoder decodes the length of bulk strings and array headers using the decodeLength method. This method reads bytes from the network until it encounters a \n character. However, it does not enforce any maximum length check while buffering the bytes if the \n character is not found. An attacker can exploit this by sending a continuous stream of digits (e.g., $1111...) without ever sending a \n.
To cause a true Denial of Service, an attacker must open multiple concurrent connections and distribute the unbounded payloads among them.
According to the RESP specification (https://redis.io/docs/latest/develop/reference/protocol-spec/), all parts of the protocol are strictly terminated with \r\n. Furthermore, the length prefix itself is an integer representation that must fit within standard numeric limits (e.g., a 64-bit signed integer). Therefore, a stream of digits exceeding these bounds without \r\n is a protocol violation and should be rejected immediately rather than buffered indefinitely.
Impact Denial of Service due to memory exhaustion. Any application using Netty's RedisDecoder to handle untrusted Redis traffic is vulnerable.
Other sources
Netty is a network application framework for development of protocol servers and clients. In netty-codec-redis prior to versions 4.1.135.Final and 4.2.15.Final, an attacker can cause DoS by sending crafted Redis payloads across multiple connections without \r\n. This exhausts the server's direct memory pool (OutOfDirectMemoryError), preventing legitimate connections from being processed. Versions 4.1.135.Final and 4.2.15.Final patch the issue.
— MITRE
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
maven/io.netty:netty-codec-redisto a version that resolves this vulnerability.Fixed in 4.1.135.Final - Upgrade
Upgrade
maven/io.netty:netty-codec-redisto a version that resolves this vulnerability.Fixed in 4.2.15.Final - Upgrade
Upgrade
io.netty:netty-codec-redisto a version that resolves this vulnerability.Fixed in 4.1.135.Final - Upgrade
Upgrade
io.netty:netty-codec-redisto a version that resolves this vulnerability.Fixed in 4.2.15.Final - Compensating control
Reject untrusted Redis traffic that violates the protocol termination requirement by ensuring Redis protocol commands/responses are strictly terminated with \r\n; do not allow requests/streams that never send a \n to reach Netty's RedisDecoder (e.g., enforce framing at a proxy/LB/firewall or application-level decoder so payloads lacking \r\n are dropped immediately).
Event History
Frequently Asked Questions
What is the severity of CVE-2026-44890?
The severity of CVE-2026-44890 is rated as high with a score of 7.5.
How do I fix CVE-2026-44890?
To fix CVE-2026-44890, upgrade to a patched version of netty-codec-redis, such as netty 4.1.135.Final or netty 4.2.15.Final.
What type of vulnerability is CVE-2026-44890?
CVE-2026-44890 is a denial-of-service (DoS) vulnerability caused by malformed Redis payloads.
What impact does CVE-2026-44890 have on my server?
CVE-2026-44890 can exhaust the server's direct memory pool, leading to OutOfDirectMemoryError and preventing legitimate connections.
Which software is affected by CVE-2026-44890?
CVE-2026-44890 affects the maven/io.netty:netty-codec-redis library.