CVE-2026-31409Linux内核的ksmbd组件中发现了一个高危漏洞。在处理多通道SMB2_SESSION_SETUP请求时,若请求带有SMB2_SESSION_REQ_FLAG_BINDING标志且失败,ksmbd会将连接的binding状态标记为真,但在错误处理流程中忘记将其重置。这导致连接永久保持绑定状态,后续的会话查询将错误地回退到全局会话表。此漏洞可能被恶意利用以破坏会话管理机制,造成拒绝服务或会话混淆,严重威胁系统安全。
该漏洞根源在于Linux内核ksmbd驱动程序对SMB多通道绑定请求的异常处理逻辑缺陷。当客户端发送带有SMB2_SESSION_REQ_FLAG_BINDING标志的SMB2_SESSION_SETUP请求时,ksmbd期望通过特定的连接建立会话绑定。如果该请求因任何原因失败(例如认证失败或参数错误),代码路径会将conn->binding变量设为true以标记状态。然而,在跳转到错误处理标签时,代码未执行将conn->binding重置为false的操作。因此,该连接对象在后续生命周期中被错误地认为处于绑定状态。这导致所有后续的会话查找函数调用ksmbd_session_lookup_all时,不再正确匹配当前连接的会话,而是回退到遍历全局会话表。攻击者可通过发送特制的SMB报文触发此逻辑,利用状态不一致导致服务崩溃或绕过特定的会话隔离检查,从而实现拒绝服务攻击或潜在的信息泄露。