IPBUF安全漏洞报告
English
CVE-2026-43362 CVSS 8.1 高危

CVE-2026-43362 Linux内核SMB客户端加密损坏漏洞

披露日期: 2026-05-08
来源: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

漏洞信息

漏洞编号
CVE-2026-43362
漏洞类型
逻辑错误
CVSS评分
8.1 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Linux Kernel

相关标签

Linux KernelSMBData CorruptionLogic ErrorIn-place Encryption

漏洞概述

Linux内核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中,确保在加密前进行深拷贝。

攻击链分析

STEP 1
1. 环境触发
攻击者或网络环境导致SMB连接出现不稳定,引发传输错误。
STEP 2
2. 发起写入
客户端通过SMB2_write()发起写操作,数据被准备在iov中。
STEP 3
3. 加密与错误
数据在iov中完成原地加密,随后网络发生中断,触发重试机制。
STEP 4
4. 错误重传
重试逻辑复用已加密的iov缓冲区,将密文作为新数据发送。
STEP 5
5. 数据损坏
服务器接收到错误的密文数据,导致文件内容损坏或功能失效。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import os import time from smb.SMBConnection import SMBConnection # Conceptual PoC for triggering the vulnerability # This script attempts to write to an SMB share. # To trigger the bug, network instability must be introduced (e.g., using tc to drop packets). # The kernel will retry the write, sending corrupted (encrypted) data. def trigger_corruption(username, password, client_name, server_name, domain, ip, share_name, file_path): try: conn = SMBConnection(username, password, client_name, server_name, domain=domain, use_ntlm_v2=True) conn.connect(ip, 139) # Simulating data that might be sensitive or structural (SFU mknod/symlink) data = b"Original Payload Data" with open(file_path, 'wb') as f: # Write operation that triggers SMB2_write # If network drops here, retry sends encrypted data conn.storeFile(share_name, os.path.basename(file_path), f) print("Write operation completed. Check server for corruption.") conn.close() except Exception as e: print(f"Error: {e}") # Note: Actual exploitation requires unstable network conditions to force retries.

影响范围

Linux Kernel < 6.10

防御指南

临时缓解措施
由于该漏洞主要在连接不稳定时触发,临时缓解措施包括确保网络连接的高度稳定,减少重连发生的概率。此外,如果业务允许,可尝试使用异步写入路径(如果应用层支持),因为异步写入路径使用了深拷贝机制,不受此漏洞影响。

参考链接