IPBUF安全漏洞报告
English
CVE-2026-43472 CVSS 5.5 中危

CVE-2026-43472 Linux内核unshare_fs逻辑漏洞

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

漏洞信息

漏洞编号
CVE-2026-43472
漏洞类型
逻辑错误
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel

相关标签

Linux Kernel逻辑错误拒绝服务本地漏洞unshare

漏洞概述

Linux内核在处理unshare(2)系统调用时存在逻辑缺陷,具体涉及unshare_fs()函数的处理机制。当用户使用CLONE_NEWNS标志且当前文件系统结构未被共享时,如果后续的命名空间创建操作(如CLONE_NEWCGROUP)失败,会导致进程的根目录和当前工作目录指向已分离的挂载点。尽管此问题不会直接导致释放后使用(UAF)漏洞,但会使进程处于异常状态,破坏系统的一致性,可能导致本地拒绝服务或与其他竞态条件结合产生更严重的影响。

技术细节

该漏洞发生于Linux内核的unshare(2)系统调用执行路径中。当调用者传入CLONE_NEWNS标志且current->fs->users值为1(表示未共享)时,内核错误地将current->fs直接传递给copy_mnt_ns()。若此时还包含了CLONE_NEWCGROUP标志,且copy_cgroup_ns()在copy_mnt_ns()成功后执行失败(例如因内存不足),内核会调用put_mnt_ns()销毁新创建的命名空间及其挂载树。然而,current->fs->root和current->fs->pwd指针仍指向这些已销毁的挂载点。本地低权限攻击者可通过触发此执行流,利用该逻辑缺陷导致进程状态异常,可能引发拒绝服务攻击,或结合pivot_root()等竞态条件进一步破坏系统稳定性或提升权限。

攻击链分析

STEP 1
1. 触发系统调用
本地低权限用户运行恶意程序,调用unshare(2)系统调用。
STEP 2
2. 传递特定标志
程序传入CLONE_NEWNS和CLONE_NEWCGROUP标志,试图同时创建新的挂载命名空间和Cgroup命名空间。
STEP 3
3. 执行命名空间复制
内核执行copy_mnt_ns(),此时current->fs->users为1,内核直接传递current->fs,并修改其pwd和root指向新命名空间。
STEP 4
4. 诱导后续操作失败
内核执行copy_cgroup_ns(),由于资源限制(如内存不足)或其他原因导致操作失败。
STEP 5
5. 错误的资源清理
内核调用put_mnt_ns()清理已创建的命名空间,导致挂载树被销毁,但current->fs的指针仍指向已分离的挂载点。
STEP 6
6. 造成影响
进程处于不一致状态,访问文件系统时可能崩溃或挂起,导致拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#include <sched.h> #include <stdio.h> #include <unistd.h> #include <errno.h> #define _GNU_SOURCE /* * PoC for CVE-2026-43472 * This program attempts to trigger the vulnerable code path in unshare(2). * It uses CLONE_NEWNS and CLONE_NEWCGROUP. To trigger the bug, * copy_cgroup_ns() needs to fail after copy_mnt_ns() succeeds. * In a real scenario, this might require resource exhaustion conditions. */ int main() { printf("[+] Attempting to trigger CVE-2026-43472...\n"); // CLONE_NEWNS | CLONE_NEWCGROUP int ret = unshare(CLONE_NEWNS | CLONE_NEWCGROUP); if (ret == 0) { printf("[+] unshare succeeded. If kernel is vulnerable and conditions met, fs state might be corrupted.\n"); } else { perror("[-] unshare failed"); // Failure is expected to trigger the specific bug path (clean up logic) printf("[!] unshare failed with error. Check kernel logs for instability.\n"); } // Access filesystem to check if we are on a detached mount char cwd[1024]; if (getcwd(cwd, sizeof(cwd)) != NULL) { printf("[+] Current directory: %s\n", cwd); } return 0; }

影响范围

Linux Kernel < 6.6 (Specific commits fix this)
Linux Kernel Stable Series (v5.10, v5.15, v6.1 etc before specific patches)

防御指南

临时缓解措施
限制非特权用户对unshare系统调用的使用,或通过内核参数限制用户命名空间的创建,直到完成内核升级。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表