Linux 内核曝 DirtyClone 高危漏洞:本地用户可提权至 root,影响全系主流发行版
一、情况概述
JFrog 安全研究团队披露了 Linux 内核本地提权漏洞 DirtyClone(CVE-2026-43503),CVSS 评分 8.8。该漏洞属于 DirtyFrag 家族的新变种,因 __pskb_copy_fclone() 等函数在克隆 socket buffer 时丢失 SKBFL_SHARED_FRAG 标志,导致内核将只读 page cache 内存误判为可写网络缓冲区。攻击者通过本地 IPsec 处理即可静默篡改内存中的特权可执行文件(如 /usr/bin/su)并获取 root 权限,且不留内核日志或审计痕迹。
Debian、Ubuntu、Fedora 等默认启用非特权用户命名空间的发行版风险最高,多租户云环境和 Kubernetes 集群尤需警惕。该漏洞已于 5 月 21 日在 Linux v7.1-rc5 中修复,Ubuntu 等发行版已发布补丁内核。
二、风险详情
1. 漏洞成因
DirtyClone 属于 DirtyFrag 漏洞家族的新变种,其根因位于 Linux 内核网络子系统中。__pskb_copy_fclone() 等函数在执行 socket buffer(skb)克隆操作时,未能正确保留 SKBFL_SHARED_FRAG 标志位。该标志用于标识 page cache 中的共享只读页,标志丢失后内核将原本只读的 page cache 页错误地视为可写网络缓冲区。
攻击者利用这一逻辑缺陷,通过本地 IPsec 处理流程构造恶意网络数据包,将只读页缓存映射为可写内存,进而实现对系统特权可执行文件的静默篡改。
2. 漏洞特征
- 无需交互:攻击者仅需拥有本地普通用户权限,无需任何用户交互即可触发漏洞利用。
- 不留痕迹:篡改操作仅作用于内存中的 page cache,不触发磁盘写入,内核日志和审计系统中无任何异常记录。
- 稳定利用:属于内核逻辑缺陷而非条件竞争,利用过程稳定可靠,不易引发系统崩溃。
三、风险危害
1. 本地权限提升
任何无特权的本地普通用户均可利用该漏洞篡改高权限可执行文件(如 /usr/bin/su、/usr/bin/sudo),直接获取系统 root 权限。
2. 容器逃逸与跨租户攻击
由于宿主机与容器共享内核 page cache,容器内的攻击者可篡改宿主机的特权二进制文件,实现容器逃逸并接管 Kubernetes 节点或宿主机。
3. 云环境隔离失效
在多租户云平台、CI/CD 执行环境、Serverless 容器等场景中,攻击者可跨越租户隔离边界,影响同节点上的其他租户工作负载。
四、受影响范围
受影响的操作系统及版本:
- Ubuntu:22.04 LTS / 24.04 LTS(默认启用非特权用户命名空间)
- Debian:Bookworm 及更高版本(默认启用非特权用户命名空间)
- Fedora:全系列(默认启用非特权用户命名空间)
- RHEL / CentOS / Rocky / Alma:默认未启用非特权用户命名空间,风险相对较低但仍受影响
- Kubernetes 集群:使用默认配置的容器环境
修复版本:
- Linux 内核主线:v7.1-rc5 及以上(2026 年 5 月 21 日修复)
- Ubuntu:已发布对应补丁内核版本
不受影响的场景:
- 已禁用非特权用户命名空间的系统(
kernel.unprivileged_userns_clone = 0) - 已加载修复补丁的内核版本
五、排查方法
1. 确认是否启用非特权用户命名空间
sysctl kernel.unprivileged_userns_clone
若返回 kernel.unprivileged_userns_clone = 1,则系统默认允许非特权用户创建用户命名空间,面临较高风险。
2. 检查内核版本
uname -r
若内核版本低于修复版本,则可能受影响。
3. 检查是否加载 IPsec 相关内核模块
lsmod | grep -E "esp4|esp6|rxrpc"
若上述模块已加载,攻击面进一步扩大。
4. 注意
由于该漏洞仅修改内存中的 page cache,对磁盘文件执行 md5sum 或 sha256sum 校验无法检测是否已遭受攻击。
六、处置与修复建议
1. 升级内核(首选方案)
各主流 Linux 发行版已发布包含修复的内核更新。建议尽快升级至修复版本并重启系统。
# Ubuntu / Debian
apt update && apt upgrade linux-image-$(uname -r)
# Fedora
dnf update kernel
# RHEL / CentOS / Rocky / Alma
dnf update kernel
升级后需重启系统使新内核生效:
systemctl reboot
2. 临时缓解措施
若暂时无法升级内核,可采取以下措施降低风险:
方案一:禁用非特权用户命名空间
echo "kernel.unprivileged_userns_clone = 0" > /etc/sysctl.d/99-disable-userns.conf
sysctl -p /etc/sysctl.d/99-disable-userns.conf
注意:禁用非特权用户命名空间可能影响容器运行时(如 Docker、Podman)及部分应用程序的正常使用。
方案二:屏蔽 IPsec 相关内核模块
# 屏蔽 esp4 模块
echo "install esp4 /bin/false" > /etc/modprobe.d/disable-esp4.conf
# 屏蔽 esp6 模块
echo "install esp6 /bin/false" > /etc/modprobe.d/disable-esp6.conf
# 屏蔽 rxrpc 模块
echo "install rxrpc /bin/false" > /etc/modprobe.d/disable-rxrpc.conf
说明:屏蔽上述模块可能影响 IPsec VPN 连接、Kubernetes 集群通信及使用 rxrpc 的网络服务。
七、修复优先级建议
建议按照以下优先级开展处置:
| 优先级 | 处置对象 | 原因 |
|---|---|---|
| P0 | 多租户云环境 / Kubernetes 集群 | 容器共享内核 page cache,容器逃逸风险极高 |
| P0 | 默认启用非特权用户命名空间的发行版(Ubuntu / Debian / Fedora) | 攻击面更大,利用门槛低 |
| P1 | CI/CD 执行器 / Serverless 容器 | 多租户隔离场景,跨租户攻击风险 |
| P2 | 普通服务器 / 单用户环境 | 风险较低,但建议按计划升级 |
八、总结
DirtyClone(CVE-2026-43503)是 DirtyFrag 家族的高危本地提权漏洞,CVSS 评分 8.8。该漏洞利用 Linux 内核 __pskb_copy_fclone() 等函数在处理 socket buffer 克隆时丢失 SKBFL_SHARED_FRAG 标志的逻辑缺陷,允许本地攻击者通过 IPsec 处理流程将只读 page cache 映射为可写内存,静默篡改特权可执行文件获取 root 权限,且不留下内核日志或审计痕迹。
建议受影响用户尽快升级内核至修复版本。若短期内无法升级,应优先禁用非特权用户命名空间,或屏蔽 esp4、esp6、rxrpc 内核模块作为临时缓解措施。