影响所有主流 Linux 发行版的页缓存写入漏洞链,无条件的本地 root 提权。


漏洞概述

项目 内容
漏洞名称 Dirty Frag
CVE 编号 CVE-2026-43284(ESP 子模块)、CVE-2026-43500(RxRPC 子模块)
漏洞类型 页缓存写入(Page-Cache Write)— 与 Dirty Pipe 同类
CVSS 7.8(High)
发现者 Hyunwoo Kim(@v4bel)
公开时间 2026 年 5 月 7 日
在野利用 ✅ 确认 — 公开 PoC 当天即出现利用样本

影响范围

受影响内核版本

CVE 子系统 引入时间 影响范围
CVE-2026-43284 IPsec ESP(esp4/esp6 2017 年 1 月(cac2661c53f3 ~9 年所有内核
CVE-2026-43500 RxRPC(rxrpc 2023 年 6 月(2dc334f1a63a 2023 年后内核

实际上所有主流发行版均受影响: Ubuntu、RHEL/CentOS、Fedora、Debian、openSUSE、AlmaLinux、Rocky Linux、SUSE Linux Enterprise 等。

已修复版本

内核线 修复版本
Linux 主线 7.0.6+
Linux LTS 6.18.29+
Fedora 43/44 Kernel 7.0.4-100/200
OpenShift 4.12.90 / 4.14.66 / 4.16.62 … 4.21.15
SUSE SLES15 SP7 RT patched
Ubuntu apt dist-upgrade 更新内核

漏洞原理

根因:原地解密操作绕过写时复制

Dirty Frag 由两个独立的页缓存写入原语组成,相互弥补盲区。

两个漏洞都位于内核的原地解密(in-place decryption)快速路径中。当套接字缓冲区(sk_buff)持有非内核私有的分页片段(如通过 splice()sendfile() 挂载的管道页),ESP 和 RxRPC 的接收路径直接在外部页上进行解密,而不是先拷贝一份私有副本。

CVE-2026-43284(ESP)

  1. 攻击者在用户命名空间内获取 CAP_NET_ADMIN
  2. 注册 XFRM 安全关联(SA)
  3. 通过 loopback 发送 UDP 报文,其 payload 包含通过 splice 固定的页缓存页
  4. 内核对该页进行原地 AEAD 解密,写入攻击者控制的字节
  5. 重复利用此原语覆盖 /usr/bin/su 的 ELF 头部

CVE-2026-43500(RxRPC)

  1. 不需要用户命名空间socket(AF_RXRPC)add_key("rxrpc", ...) 均无需特权
  2. 使用 pcbc(fcrypt) 进行 8 字节写入(精度稍差,需爆破)
  3. 目标:/etc/passwd,清除 root 密码哈希

互补关系

CVE 需要用户命名空间? 写入精度 目标文件
CVE-2026-43284 (ESP) ✅ 需要 精确字节 SUID 二进制文件
CVE-2026-43500 (RxRPC) ❌ 不需要 8 字节块 文本文件(如 passwd)
  • ESP 路径在 Ubuntu 的 AppArmor 阻止用户命名空间时失效
  • RxRPC 路径在禁用 rxrpc 模块的发行版上不可用
  • 两者配合覆盖几乎所有主流发行版的默认配置

漏洞特点

  • 确定性逻辑漏洞 — 无竞态条件,无需时间窗口
  • 跨发行版兼容 — 同一 PoC 可在多数发行版上工作
  • 隐匿性强 — 修改仅发生在内存中,磁盘文件不变,AIDE/Tripwire 无法检测

缓解措施

方案一:升级内核(推荐)

# Ubuntu/Debian
sudo apt update && sudo apt dist-upgrade
sudo reboot

# Fedora
sudo dnf upgrade --refresh kernel kernel-core kernel-modules
sudo reboot

# RHEL/CentOS/AlmaLinux/Rocky
sudo dnf update kernel
sudo reboot

# Arch Linux
sudo pacman -Syu linux
sudo reboot

方案二:临时缓解 — 禁用受影响模块

# 禁用模块
sudo sh -c 'printf "install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n" > /etc/modprobe.d/dirtyfrag.conf'
sudo rmmod esp4 esp6 rxrpc 2>/dev/null

# 清空页缓存中的可能被篡改的页面
echo 3 | sudo tee /proc/sys/vm/drop_caches

⚠️ 影响说明:

  • 禁用 esp4/esp6中断 IPsec VPN 隧道(strongSwan、Libreswan 等),WireGuard 不受影响
  • 禁用 rxrpc 会中断 AFS 分布式文件系统客户端(极少使用)

方案三:限制用户命名空间

# Ubuntu — 无需额外操作(AppArmor 默认限制)
# 其他发行版可通过内核参数限制
sudo sysctl -w kernel.unprivileged_userns_clone=0
echo "kernel.unprivileged_userns_clone=0" | sudo tee -a /etc/sysctl.d/99-disable-userns.conf

方案四:Seccomp 防护

在容器或应用程序中通过 seccomp 策略阻止 AF_RXRPC(协议 33)和 AF_ALG(协议 38)套接字创建:

{
    "names": ["socket"],
    "args": [
        {"index": 0, "value": 33, "op": "SCMP_CMP_NE"},
        {"index": 0, "value": 38, "op": "SCMP_CMP_NE"}
    ]
}

检测方法

版本检测

# 检查当前内核版本
uname -r

# 对应安全版本:
# 7.0.6+ / 6.18.29+ / 各发行版已修复版本号

模块状态检测

lsmod | grep -E "esp4|esp6|rxrpc"

社区检测脚本

# DirtyFrag-Detector
git clone https://github.com/liamromanis101/DirtyFrag-Detector
cd DirtyFrag-Detector && chmod +x detect.sh && sudo ./detect.sh

时间线

日期 事件
2026-04-30 向 Linux 内核安全团队报告
2026-05-07 第三方打破 embargo;Hyunwoo Kim 提前公开 PoC
2026-05-07 CVE-2026-43284 分配;ESP 修复提交(f4c50a4034e6
2026-05-07 PoC 公开 7 分钟后即出现在 VirusTotal 上
2026-05-08 CVE-2026-43500 保留;各发行版开始推送 ESP 修复
2026-05-10 RxRPC 修复合入主线(aa54b1d27fe0
2026-05-11 各发行版开始回溯移植 RxRPC 补丁

参考资料