IPBUF安全漏洞报告
English
CVE-2026-31611 CVSS 8.6 高危

CVE-2026-31611 Linux内核ksmbd越界读取漏洞

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

漏洞信息

漏洞编号
CVE-2026-31611
漏洞类型
越界读取
CVSS评分
8.6 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel

相关标签

Linux KernelksmbdCVE-2026-31611Out-of-bounds ReadPrivilege EscalationRemote Code Execution

漏洞概述

Linux内核的ksmbd组件存在一个高危安全漏洞。该漏洞源于`parse_dacl`函数在处理ACE SID时,未充分验证子认证数量。当特定SID前缀匹配且子认证数为2时,系统会错误地读取安全描述符边界之外的4字节数据。这些越界数据随后被强制转换为文件的POSIX模式,可能导致文件权限被意外修改,进而影响系统的机密性、完整性和可用性。

技术细节

该漏洞发生在Linux内核的ksmbd服务中,具体涉及`parse_dacl`函数对安全描述符(DACL)的解析逻辑。函数会将每个访问控制项(ACE)的安全标识符(SID)与`sid_unix_NFS_mode`(S-1-5-88-3)进行比对。比对逻辑仅检查`min(num_subauth, 2)`个子权威机构。当客户端发送的SID具有`num_subauth = 2`且子权威值为{88, 3}时,会触发匹配。然而,代码后续尝试读取`sid.sub_auth[2]`作为文件模式。由于此时`num_subauth`仅为2,读取操作实际上访问了安全描述符末尾之外的4字节内存。这些越界读取的随机内存内容会被掩码处理为9位,并作为文件的POSIX权限模式应用。这种未定义行为可能导致文件权限被设置为任意值,破坏文件系统的安全策略,攻击者无需认证即可通过网络利用此漏洞。

攻击链分析

STEP 1
Discovery
攻击者扫描目标网络,识别开启ksmbd服务的Linux主机(通常监听445端口)。
STEP 2
Exploitation
攻击者向目标服务器发送特制的SMB请求,请求中包含一个精心构造的安全描述符(DACL),其中包含一个具有特定前缀(S-1-5-88-3)但子认证数量为2的ACE。
STEP 3
Trigger
服务器端的ksmbd模块在解析该DACL时,`parse_dacl`函数匹配到SID前缀,但在未检查边界的情况下尝试读取第3个子认证(sub_auth[2]),导致越界读取。
STEP 4
Impact
读取到的越界内存数据被错误地解释为文件的POSIX权限模式并应用。这可能导致文件权限被篡改,造成数据泄露、完整性受损或拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import struct # This is a conceptual PoC to demonstrate the structure causing the OOB read. # It constructs a Security Descriptor (SD) with a specific SID that triggers the vulnerability. def build_malicious_sid(): # SID Revision: 1 # SubAuthorityCount: 2 (Triggers the bug, expects 3) # IdentifierAuthority: SECURITY_NT_AUTHORITY (5) # SubAuthorities: [88, 3] (Matches S-1-5-88-3) sid_revision = 1 sub_auth_count = 2 identifier_authority = b'\x00\x00\x00\x00\x00\x05' # S-1-5 sub_authorities = struct.pack('<II', 88, 3) sid = struct.pack('<B', sid_revision) sid += struct.pack('<B', sub_auth_count) sid += identifier_authority sid += sub_authorities # The ACE containing this SID should be placed at the end of the ACL. return sid # Note: Sending this to a vulnerable ksmbd server via SMB COM2/CREATE or SET_INFO # commands may trigger the out-of-bounds read in parse_dacl(). print(f"Malicious SID hex: {build_malicious_sid().hex()}")

影响范围

Linux Kernel (请参考各发行版安全公告及Git补丁)

防御指南

临时缓解措施
建议立即更新系统内核以修复此漏洞。若无法立即更新,应禁用ksmbd服务(modprobe -r ksmbd),并通过网络访问控制列表(ACL)限制对SMB端口的访问,防止未授权攻击者利用此漏洞。

参考链接

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