IPBUF安全漏洞报告
English
CVE-2026-43379 CVSS 9.8 严重

CVE-2026-43379: Linux内核ksmbd释放后重用漏洞

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

漏洞信息

漏洞编号
CVE-2026-43379
漏洞类型
释放后重用
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel

相关标签

Use-After-FreeLinux KernelksmbdRace ConditionUAFCritical

漏洞概述

Linux内核中的ksmbd模块存在一个严重的释放后重用漏洞。该漏洞发生在`smb_lazy_parent_lease_break_close`函数中,由于在调用`rcu_read_unlock()`之后仍然访问`opinfo`指针,导致竞态条件。攻击者可利用此条件在内存被释放后进行访问,从而可能导致内核崩溃或权限提升。该漏洞CVSS评分高达9.8,无需用户交互即可通过网络被利用,对系统的机密性、完整性和可用性构成极高威胁。

技术细节

该漏洞的核心在于Linux内核ksmbd组件对RCU(Read-Copy-Update)锁机制的不当使用。在函数`smb_lazy_parent_lease_break_close`中,代码首先通过`rcu_dereference(fp->f_opinfo)`获取了`opinfo`指针。随后,在调用了`rcu_read_unlock()`释放读锁之后,代码继续对该指针进行解引用操作(例如访问`opinfo->is_lease`)。此时,由于读锁已释放,另一个并发的写入线程可能已经将该内存区域释放并重新分配。因此,后续的指针访问实际上是在操作已释放的内存,即典型的释放后重用(UAF)。攻击者可以通过构造特制的SMB数据包触发该竞态条件,进而控制内核执行流,实现拒绝服务攻击或潜在的内核级代码执行。

攻击链分析

STEP 1
信息收集
攻击者扫描网络,识别开启SMB服务(端口445)且运行受影响Linux内核版本的目标。
STEP 2
漏洞利用
攻击者向目标服务器的ksmbd模块发送特制的SMB请求,旨在触发`smb_lazy_parent_lease_break_close`函数路径。
STEP 3
竞态触发
在目标系统处理请求时,攻击者精心控制时序,使`opinfo`指针在`rcu_read_unlock`之后、再次访问之前被并发线程释放。
STEP 4
执行攻击
成功触发释放后重用(UAF)后,攻击者可导致系统内核崩溃(DoS)或进一步利用该内存破坏漏洞执行任意内核代码。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * PoC Concept for CVE-2026-43379 * This C code demonstrates the vulnerable logic in ksmbd. * The actual exploitation requires sending specific SMB packets * to trigger the race condition in the kernel. */ #include <linux/rcupdate.h> struct opinfo { int is_lease; // ... other fields }; struct file { struct opinfo *f_opinfo; }; // Simulated vulnerable function logic void smb_lazy_parent_lease_break_close_vulnerable(struct file *fp) { struct opinfo *opinfo; // 1. Read pointer under RCU protection rcu_read_lock(); opinfo = rcu_dereference(fp->f_opinfo); if (!opinfo) { rcu_read_unlock(); return; } // 2. Release RCU lock // VULNERABILITY: Lock is released too early rcu_read_unlock(); // 3. Access pointer after unlock // Race Condition: 'opinfo' might be freed by another thread here. // Accessing opinfo->is_lease leads to Use-After-Free. if (opinfo->is_lease) { // Dangerous access printk(KERN_INFO "Processing lease\n"); } }

影响范围

Linux Kernel (ksmbd module enabled, versions prior to fix commits)

防御指南

临时缓解措施
建议立即更新Linux内核至修复版本。若无法立即更新,应在防火墙上阻断TCP 445端口的入站流量,或在系统中禁用ksmbd服务以规避攻击面。

参考链接