CVE-2026-43362Linux内核SMB客户端存在一个安全漏洞,该漏洞源于SMB2_write()函数在处理加密写入时的逻辑缺陷。当连接出现不稳定导致重试时,由于使用了指针共享的I/O向量,重试操作会发送已经被加密的数据而非原始明文。这导致在服务器端接收到损坏的数据,影响数据的完整性和可用性。该漏洞主要影响SFU mknod、MF symlinks等操作,且在6.10内核版本之前的同步写入路径中也存在此问题。
该漏洞发生在SMB客户端的写入路径中。SMB2_write()将写负载放置在iov[1]中,smb3_init_transform_rq()通过指针共享rq_iov。当crypt_message()执行加密时,它原地加密iov[1],将明文替换为密文。如果在加密后发生可重试的错误(如网络波动导致重连),重试逻辑会重新发送相同的iov[1],此时该缓冲区中已经包含密文而非原始数据,从而导致数据损坏。异步写入路径由于使用了rq_iter进行深拷贝,因此不受此影响。修复方案是将写负载通过iov_iter_kvec()移动到rq_iter中,确保在加密前进行深拷贝。