CVE-2026-31707Linux内核ksmbd组件在处理IPC响应时存在整数溢出漏洞。由于ipc_validate_msg()函数未正确校验攻击者控制的payload_sz和ngroups字段,导致无符号整数运算溢出。攻击者可利用此漏洞绕过消息大小检查,致使内核执行越界内存操作,从而引发拒绝服务或权限提升。
该漏洞位于Linux内核ksmbd模块的ipc_validate_msg()函数,主要影响对守护进程IPC响应的验证逻辑。在处理KSMBD_EVENT_RPC_REQUEST、KSMBD_EVENT_SHARE_CONFIG_REQUEST及KSMBD_EVENT_LOGIN_REQUEST_EXT三种消息类型时,函数将攻击者可控的payload_sz(__u32类型)或ngroups(__s32类型)与固定结构体大小进行加法或乘法运算。由于使用无符号整数运算,攻击者可精心构造数值致使计算结果溢出回绕。例如,设置极大的payload_sz可使计算出的msg_sz恰好等于预期的合法大小,从而绕过安全检查。随后,下游代码(如smb2pdu.c中的memcpy或ksmbd_alloc_user中的kmemdup)直接信任未经验证的原始长度参数执行内存操作,导致内核堆越界读写,进而引发系统崩溃、拒绝服务或敏感信息泄露。