CVE-2026-31613Linux内核SMB客户端在解析符号链接错误响应时存在越界读取漏洞。当处理STATUS_STOPPED_ON_SYMLINK状态时,由于未正确校验服务器返回的ErrorDataLength,导致解析器读取堆内存边界之外的数据。这些越界数据经UTF-16解码后通过readlink系统调用返回给用户空间,可能导致敏感信息泄露。
该漏洞发生在Linux内核fs/smb/client模块中。当SMB服务器返回STATUS_STOPPED_ON_SYMLINK错误时,smb2_parse_symlink_response()函数负责解析。漏洞点在于:1. 循环遍历错误上下文时,仅检查指针是否小于end,但未预留读取上下文头部(4字节)的空间,导致在特定ErrorDataLength下发生OOB读取。2. 计算PathBuffer边界时使用了固定的SMB2_SYMLINK_STRUCT_SIZE偏移量,未考虑ErrorContextCount非零时数据结构偏移量的动态增加,导致边界检查过短。攻击者可通过控制恶意SMB服务器发送特制数据包,触发内核读取超出iov_len范围的堆内存,造成信息泄露。