CVE-2026-31611Linux内核的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权限模式应用。这种未定义行为可能导致文件权限被设置为任意值,破坏文件系统的安全策略,攻击者无需认证即可通过网络利用此漏洞。