IPBUF安全漏洞报告
English
CVE-2026-31433 CVSS 8.8 高危

CVE-2026-31433: Linux内核ksmbd越界写入漏洞

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

漏洞信息

漏洞编号
CVE-2026-31433
漏洞类型
缓冲区溢出
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel

相关标签

Linux Kernel缓冲区溢出ksmbdCVE-2026-31433OOB WriteRCE

漏洞概述

Linux内核中的ksmbd模块存在一处越界写入漏洞。该漏洞发生在处理包含QUERY_DIRECTORY和QUERY_INFO(FILE_ALL_INFORMATION)的复合请求时。如果第一个命令消耗了几乎所有的max_trans_size,get_file_all_info()函数会在未验证剩余缓冲区大小的情况下,盲目调用smbConvertToUTF16()并使用PATH_MAX长度,导致写入超出响应缓冲区的范围。由于缺少对客户端提供的OutputBufferLength的验证,当文件名长度超过可用缓冲区空间时,可能导致缓冲区溢出或内存损坏,从而严重影响系统的机密性、完整性和可用性。

技术细节

该漏洞源于Linux内核ksmbd服务器中get_file_all_info()函数的缺陷。在处理SMB2复合请求时,攻击者可以构造特定的请求序列:首先是QUERY_DIRECTORY命令,其设计目的是消耗接近max_trans_size的传输配额;紧接着是QUERY_INFO(FILE_ALL_INFORMATION)命令。在处理第二个命令时,代码需要将文件名复制到响应缓冲区的FileName字段。然而,原实现未计算剩余缓冲区空间,直接使用常量PATH_MAX作为smbConvertToUTF16()的长度参数。由于此时剩余空间极小,该操作会覆盖响应缓冲区之后的内存,造成越界写入。这可能导致内核崩溃(拒绝服务)或潜在的权限提升。修复方案引入了smb2_calc_max_out_buf_len()来动态计算可用空间,并在空间不足时返回错误。

攻击链分析

STEP 1
1. 建立连接
攻击者通过网络连接到开启了ksmbd服务的Linux服务器。
STEP 2
2. 发送恶意复合请求
攻击者发送特制的SMB复合请求,包含QUERY_DIRECTORY和QUERY_INFO两个命令。
STEP 3
3. 耗尽缓冲区配额
第一个命令(QUERY_DIRECTORY)被设计为消耗接近max_trans_size的传输缓冲区配额。
STEP 4
4. 触发越界写入
处理第二个命令时,get_file_all_info()未检查剩余空间,直接写入PATH_MAX长度的数据,导致堆/栈越界。
STEP 5
5. 达成攻击效果
导致内核内存损坏,可能引发系统崩溃(DoS)或进一步利用实现代码执行。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import socket import struct # This is a conceptual PoC to demonstrate the compound request structure. # Actual exploitation requires precise packet crafting and kernel interaction. def create_compound_request(): # SMB Header placeholder header = b"\x00\x00\x00\x00" # ... SMB2 Header ... # Command 1: QUERY_DIRECTORY (Designed to consume max_trans_size) # This payload should be sized to leave very little room for the next command query_dir_payload = b"A" * 1024 # Adjust size based on target max_trans_size # Command 2: QUERY_INFO (FILE_ALL_INFORMATION) # This triggers the vulnerable get_file_all_info() query_info_cmd = struct.pack('<I', 1) # FileAllInformation # Combine into compound request # The vulnerability triggers when processing the second command # due to lack of OutputBufferLength check against remaining space. return header + query_dir_payload + query_info_cmd # Note: This is for educational analysis only. # Real-world testing requires a vulnerable environment and deep protocol knowledge. print("PoC structure generated for analysis.")

影响范围

Linux Kernel (ksmbd enabled, versions prior to patch)

防御指南

临时缓解措施
建议立即应用官方发布的内核补丁进行修复。若无法立即重启更新,可暂时禁用ksmbd服务以规避风险,并配置防火墙规则阻断对TCP 445端口的非必要访问。

参考链接

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