CVE-2026-53383 in Linux
摘要
由 VulDB • 2026-07-19
在 Linux 内核中,已修复以下漏洞:
ksmbd:拒绝复合请求分支中的非 VALID(有效)会话
`smb2_check_user_session()` 对于 COMPOUND 请求中除第一个操作之外的任何操作都采用捷径处理:它重用 `work->sess`(由第一个操作绑定的会话),仅验证 SessionId,然后返回“valid”(有效)。该函数从未重新检查 `work->sess->state == SMB2_SESSION_VALID`,且当 SessionId 为 `0xFFFFFFFFFFFFFFFF`(ULLONG_MAX,MS-SMB2 相关操作的保留值)时,甚至跳过了 ID 比较。独立路径(即 `ksmbd_session_lookup_all()` 加上 SESSION_SETUP 状态机)会强制执行 VALID 状态;而复合请求分支则绕过了所有这些检查。
仅携带 NTLM Type-1 (NtLmNegotiate) blob 的 SESSION_SETUP 会发布一个新的 SMB2_SESSION_IN_PROGRESS(进行中)会话,其 `sess->user` 仍为 NULL(用户对象稍后由 `ntlm_authenticate()` 分配)。如果将该操作作为 COMPOUND 请求的第一个操作,而第二个操作是 TREE_CONNECT(相关 SessionId=ULLONG_MAX, \\host\IPC$),则树连接将在该 IN_PROGRESS 会话上运行并到达 `ksmbd_ipc_tree_connect_request()`。此时,代码会解引用 `user_name(sess->user)`,但 `sess->user` 为 NULL(transport_ipc.c:687/701/704) -> 导致远程空指针解引用和内核 Oops,从而使所有客户端的 ksmbd worker 挂起。
拒绝任何落在非 SMB2_SESSION_VALID 会话上的非首个复合操作,以镜像独立查找路径所强制执行的有效性检查。SESSION_SETUP 本身在 IN_PROGRESS 会话上运行是合法的,但它绝不会作为非首个复合操作携带,因此多阶段身份验证不受此检查的影响。
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.