CVE-2026-31612Linux内核中的ksmbd组件存在一个高危安全漏洞。在处理SMB2请求的`smb2_get_ea()`函数中,由于未正确验证客户端请求中的`EaNameLength`字段,导致该长度值被直接用于字符串比较操作。这种缺失的校验使得攻击者可以诱导服务器读取未初始化的堆内存数据。该漏洞无需用户交互且无需认证即可通过网络触发,可能导致敏感的内核内存信息泄露给攻击者,CVSS评分为7.5。
该漏洞位于Linux内核的`smbd`(SMB服务器)实现中,具体发生在`ksmbd`模块处理扩展属性(EA)请求的过程中。当`smb2_get_ea()`函数解析客户端数据包时,直接从请求中提取`ea_req->EaNameLength`值,并将其作为`strncmp()`函数的长度参数,而未检查该长度是否超出了实际接收到的缓冲区大小。攻击者可以通过发送特制的SMB2请求包,将`EaNameLength`设置为一个超出缓冲区边界的值。尽管`strncmp`会阻止缓冲区溢出,但由于未对内存进行初始化清零,服务器响应中可能包含堆内存中的残留数据。通过分析这些响应数据,攻击者可以逐步泄露内核内存内容,从而绕过地址空间布局随机化(ASLR)或其他安全机制。