CVE-2026-45536 Netty: Unix-socket fd receive leaks descriptors when peer sends two at once
A remote attacker can leak file descriptors in Netty applications using Unix sockets, potentially causing resource exhaustion and denial of service.
- Exploited in the wild
- Not known
- Login needed
- Not needed
- Attackable
- Local or same network only
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2026-45536?
CVE-2026-45536 is a medium-severity denial of service vulnerability in Netty Netty, published on 12 Jun 2026. It can only be exploited from the same machine or local network, with no action from the victim.
Official description
Netty is a network application framework for development of protocol servers and clients. Prior to versions 4.1.135.Final and 4.2.15.Final, netty_unix_socket_recvFd sets msg_control to `char control[CMSG_SPACE(sizeof(int))]` (line 940) — 24 bytes on 64-bit Linux. A peer-sent SCM_RIGHTS cmsg carrying two ints has cmsg_len = CMSG_LEN(8) = 24, which fits exactly with no MSG_CTRUNC, so the kernel installs both fds in the receiving process. The subsequent check `cmsg->cmsg_len == CMSG_LEN(sizeof(int))` (line 972, expected 20) fails, the branch that would read the fd is skipped, and neither installed fd is closed. The for(;;) loop calls recvmsg again (non-blocking → EAGAIN → Java maps to 0 → read loop exits normally), leaving two leaked fds per message. There is no MSG_CTRUNC handling. Reachable via Epoll/KQueue DomainSocketChannel when the application opts into DomainSocketReadMode.FILE_DESCRIPTORS (non-default). Versions 4.1.135.Final and 4.2.15.Final patch the issue.
Which versions are affected by CVE-2026-45536?
8 open source packages ship an affected version, including io.netty:netty-transport-native-epoll and io.netty:netty-transport-native-kqueue. It affects 1 product.
| Package | Affected | Fixed in |
|---|---|---|
io.netty:netty-transport-native-epoll Maven | All versions | 4.1.135.Final |
io.netty:netty-transport-native-epoll Maven | All versions | 4.1.135.Final |
io.netty:netty-transport-native-epoll Maven | From 4.2.0.Final | 4.2.15.Final |
io.netty:netty-transport-native-epoll Maven | From 4.2.0.Final | 4.2.15.Final |
io.netty:netty-transport-native-kqueue Maven | All versions | 4.1.135.Final |
io.netty:netty-transport-native-kqueue Maven | All versions | 4.1.135.Final |
2 more packages
io.netty:netty-transport-native-kqueue Maven | From 4.2.0.Final | 4.2.15.Final |
io.netty:netty-transport-native-kqueue Maven | From 4.2.0.Final | 4.2.15.Final |
Products include Netty Netty.
How do I fix CVE-2026-45536?
Upgrade io.netty:netty-transport-native-epoll to a fixed version for your release line: 4.1.135.Final or 4.2.15.Final.
Upgrade, then put limits on request size, rate and nesting depth so one client cannot exhaust the service. More about Denial of service.
Is CVE-2026-45536 being exploited?
There is no known exploitation of CVE-2026-45536 in the wild and no public exploit code.
Other vulnerabilities in Netty Netty
- CVE-2026-75595 Netty: SNI Routing Bypass via Fragmented TLS ClientHello Causing Fallback to Default SslContext
- CVE-2026-75596 Netty: Fragmented ClientHello records trigger quadratic pre-handshake reassembly in default SNI parsing
- CVE-2026-59901 Netty Bzip2Decoder: Infinite Loop in RLE State Machine Leads to Event-Loop Thread Hang
- CVE-2026-55851 Netty codec-haproxy: Signed-Byte Sentinel Collision in HAProxyMessageDecoder Leads to Unbounded Memory Exhaustion
- CVE-2026-56745 Netty SpdyHttpDecoder: ByteBuf Reference Leak on RST_STREAM Leads to Native Memory Exhaustion
Sources
Also known as CLEANSTART-2026-GT99821, CLEANSTART-2026-QW73146, CLEANSTART-2026-TR21269, CLEANSTART-2026-YZ64001, CLEANSTART-2026-ZM65468, DEBIAN-CVE-2026-45536 and 62 more.