无痕内核提权:CVE-2026-43503 DirtyClone漏洞完整深度分析

前言:

2026年6月25日,JFrog安全研究团队公开Linux内核高危本地提权漏洞CVE-2026-43503,代号DirtyClone(脏克隆)。它属于近年高发的DirtyFrag漏洞家族,和DirtyPipe、DirtyFrag同源,核心都是利用内核内存管理缺陷篡改系统程序,普通账号几分钟就能拿到服务器最高root权限,最可怕的是全程不留磁盘痕迹、绕过绝大多数安全审计工具,云服务器、Docker/K8s容器、企业内网主机全受波及。

一、漏洞基础信息

1.核心元数据

漏洞编号:CVE-2026-43503

漏洞代号:DirtyClone(脏克隆)

发现团队:JFrog Security Research,2026年6月25日公开完整技术报告与POC

漏洞家族:DirtyFrag同源系列(DirtyPipe、DirtyFrag、Fragnesia、DirtyClone),均为页缓存越权写入类本地提权漏洞

漏洞类型:本地权限提升(LPE)、容器逃逸、只读页缓存内存篡改

CVSS3.1评分:8.8(高危)

攻击向量:CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H

CWE分类:CWE-943(错误处理共享内存边界)、CWE-1220(权限控制不足)

2.核心危害

  1. 低权限一键Root:任意普通本地用户,无需管理员权限,无用户交互,完成内核提权;
  2. 无痕攻击,绕过审计:仅修改内存页缓存,磁盘原始文件完全不变,磁盘完整性校验工具、文件哈希监控无法检测;
  3. 容器逃逸:Docker/K8s默认开启非特权用户命名空间环境下,容器内普通用户可突破隔离获取宿主机Root;
  4. 持久全域后门:篡改/usr/bin/su、sudo等高权二进制内存副本,系统内所有用户执行命令都会触发Root权限,重启前持续生效。

二、受影响Linux内核完整范围

3.9 ≤ Linux Kernel < 5.10.257 5.11 ≤ Linux Kernel < 5.15.208 5.16 ≤ Linux Kernel < 6.1.174 6.2 ≤ Linux Kernel < 6.6.141 6.7 ≤ Linux Kernel < 6.12.91 6.13 ≤ Linux Kernel < 6.18.33 6.19 ≤ Linux Kernel < 7.0.10 7.1-rc1 ≤ Linux Kernel < 7.1-rc5

主线修复基准版本:Linux Kernel v7.1-rc5,官方commit:48f6a5356a33dd78e7144ae1faef95ffc990aae0

主流发行版受影响:Ubuntu、Debian、RHEL/CentOS、Fedora、openSUSE、各类云厂商定制内核、嵌入式Linux。

三、漏洞底层技术原理

1.漏洞根因:SKB分片克隆丢失安全标记

Linux内核网络栈__pskb_copy_fclone()函数用于netfilter TEE规则复制网络数据包分片(frag)。内核依靠SKBFL_SHARED_FRAG标志判断当前skb数据包内存是否绑定文件页缓存共享内存:

  • 标记存在:必须执行写时复制(COW),不能原地修改内存;
  • 标记缺失:内核判定内存为独立数据包缓冲区,允许原地读写。

漏洞缺陷:克隆skb分片时,仅复制分片数据描述符,未同步传递SKBFL_SHARED_FRAG标志。原始skb保留标记,克隆出来的数据包丢失标记,形成“内存实际共享、内核判定独立”的逻辑矛盾。

SKB克隆标志丢失逻辑图

(注:图片来源:JFrog Security DirtyClone官方技术报告)

2.完整攻击利用链路(分步拆解)

步骤1:获取CAP_NET_ADMIN网络管理权限

普通用户通过非特权用户命名空间创建隔离网络环境:

unshare -Urn

命名空间内自动获得CAP_NET_ADMIN能力,可自定义IPsec隧道、iptables TEE转发规则,主机内核页缓存全局共享,不受命名空间隔离限制。

步骤2:将高权二进制绑定到网络数据包

普通用户只读映射/usr/bin/su,文件加载至系统Page Cache;通过splice/vmsplice系统调用,把su对应的物理内存页挂载到UDP网络数据包skb,实现文件页缓存与网络包共享同一物理内存。

步骤3:配置TEE规则触发漏洞skb克隆

添加iptables mangle表TEE转发规则,出站UDP 4500端口数据包(IPsec 默认端口)会在内核调用__pskb_copy_fclone复制数据包,生成丢失SHARED_FRAG标记的克隆skb:

iptables -t mangle -A OUTPUT -p udp --dport 4500 -j TEE --gateway 127.0.0.1
步骤4:本地回环IPsec ESP原地解密篡改内存

攻击者自建本地环回IPsec隧道,加密自定义可控密文、IV向量;克隆skb流入IPsec接收处理函数esp_input()。因标志丢失,内核跳过COW流程,直接在共享物理内存原地执行AES-CBC解密;攻击者通过控制IV、密文偏移,精准改写su二进制内存前192字节指令。

步骤5:篡改验证逻辑,实现Root提权

覆盖su程序内身份校验分支指令,替换为setuid(0)+execve("/bin/sh")逻辑;磁盘文件无任何修改,但内存页缓存已被篡改。任意用户执行su命令时,Linux复用内存缓存副本,直接弹出Root交互式Shell,攻击完成。

3.攻击隐蔽核心特性

  1. 磁盘无修改:改动仅驻留在内存Page Cache,重启系统后自动消失,全盘哈希校验、AIDE、Tripwire等文件监控完全失效;
  2. 日志缺失:内核不会记录页缓存内存写入操作,审计系统无法捕获篡改行为;
  3. 跨进程全域生效:页缓存主机全局共享,容器内篡改会影响宿主机所有进程。

四、漏洞利用前置必备条件

  1. 攻击者拥有本地交互式普通用户Shell(SSH登录、WebShell、容器终端均可,无需管理员权限);
  2. 系统默认开启非特权用户命名空间(绝大多数Linux发行版出厂默认启用);
  3. 内核加载esp4/esp6IPsec模块(默认内置加载);
  4. 内核版本落在前文受影响区间,未安装官方修复补丁。

五、容器环境专属风险拓展

Docker、K8s等容器平台风险放大:

  1. 默认配置允许容器内普通用户执行unshare创建用户命名空间,直接拿到 CAP_NET_ADMIN;
  2. 主机页缓存全局共享,容器内利用漏洞篡改内存,直接逃逸获取宿主机 Root 权限;
  3. 容器镜像只读层仅限制磁盘写入,无法防护内存页缓存篡改。

六、分级修复与缓解方案

(一)永久根治方案(推荐所有服务器执行)

  1. 升级内核至安全版本主线内核≥7.1-rc5;稳定分支升级至修复阈值以上(如5.10升至 5.10.257、6.1升至6.1.174);云服务器执行厂商内核更新命令批量修复。
  2. 应用官方内核补丁补丁核心修复逻辑:在__pskb_copy_fclone、skb_segment等分片克隆函数中,同步传递SKBFL_SHARED_FRAG标志,确保共享内存标记不会丢失NVD。

(二)临时应急缓解(无法立刻升级内核场景)

方案1:关闭非特权用户命名空间(最有效)
#临时生效 sysctl -w kernel.unprivileged_userns_clone=0 #永久写入配置 echo "kernel.unprivileged_userns_clone=0" >> /etc/sysctl.conf sysctl -p

阻断普通用户获取CAP_NET_ADMIN能力,直接切断漏洞利用入口。

方案2:黑名单禁用IPsec ESP内核模块
echo "install esp4 /bin/false" >> /etc/modprobe.d/block-esp.conf echo "install esp6 /bin/false" >> /etc/modprobe.d/block-esp.conf rmmod esp4 esp6 2>/dev/null update-initramfs -u

适用于不使用IPsec VPN、加密隧道的服务器。

方案3:容器环境加固
  1. 启动容器添加--userns=off关闭容器用户命名空间;
  2. 采用AppArmor/Seccomp安全配置,拦截unshare、setns系统调用;
  3. 禁止容器内普通用户操作iptables、nftables网络规则。

七、入侵痕迹自查与检测手段

1.事后入侵排查

  1. 进程行为审计:检索日志中普通用户执行unshare -Urn、iptablesTEE规则、ipsec隧道配置的记录;
  2. 内存特征排查:对比/usr/bin/su磁盘哈希与内存页缓存哈希,二者不一致即存在篡改;
  3. 网络日志:排查本地UDP 4500端口环回大量加密流量、内网自建IPsec隧道行为。

2.常态化基线检测

  1. 批量脚本巡检服务器内核版本,标记受影响版本资产;
  2. 启用内存完整性监控工具(如Volatility、Tracee),监控Page Cache原地写入高权二进制行为;
  3. 日志告警:监控普通用户创建用户命名空间、加载IPsec模块操作。

八、安全防护思考与运维启示

  1. 内核内存漏洞优先级高于远程漏洞:传统安全策略侧重外网端口防护,忽视本地低权限提权漏洞;钓鱼、WebShell一旦拿下普通用户权限,DirtyClone可瞬间接管整机,内网服务器、云主机风险极高。
  2. 文件完整性工具存在天然短板:AIDE、Tripwire仅校验磁盘文件,无法监控内存页缓存篡改;纵深防御必须叠加内核级行为监控,不能仅依赖磁盘哈希校验。
  3. 用户命名空间是容器与主机通用风险面:非特权命名空间为容器提供隔离能力,同时开放大量内核攻击面;无业务需求环境应默认关闭,缩小攻击面。
  4. 内核补丁管理需要快速响应:该漏洞披露时已存在可直接运行的完整POC,无防护主机可被快速批量利用;企业需建立高危内核漏洞72小时修复机制。