1. 漏洞概况
2026 年 5 月 8 日凌晨,安全研究员 Hyunwoo Kim(@v4bel)在 oss-security 邮件列表上公布了代号为 Dirty Frag 的通用 Linux 本地提权(LPE)漏洞。该漏洞允许普通用户在未经授权的系统上直接获取 root 权限。
Dirty Frag 并非单一个漏洞,而是 两个内核漏洞的链式利用:
- xfrm-ESP Page-Cache Write — 影响期限:内核 commit cac2661c53f3(2017-01-17)起至今
- RxRPC Page-Cache Write — 影响期限:内核 commit 2dc334f1a63a(2023-06)起至今
这意味着该漏洞的有效影响时间跨度长达约 9 年(2017 年至 2026 年)。研究人员将其归类为 Dirty Pipe、Copy Fail 同族的"页缓存写"漏洞子类。
2. 技术原理:Dirty Frag 是什么
2.1 漏洞家族谱系
Dirty Frag 是 Dirty Pipe(CVE-2022-0847)和 Copy Fail 的直系后代。它们的共同核心问题是 Linux 内核在处理页缓存(page cache)时未能正确维护页面的"脏"标志位,导致攻击者可以绕过只读权限向文件写入数据。
漏洞名 "Dirty Frag" 来源于它 dirty 了 struct sk_buff 中的 frag 成员——sk_buff 是 Linux 网络子系统的核心数据结构。
2.2 两条攻击链
链 1:xfrm-ESP Page-Cache Write
该漏洞利用 Linux 内核的 IPsec ESP(Encapsulating Security Payload)协议处理逻辑中的缺陷,实现了强大的任意 4 字节 STORE 原语(与 Copy Fail 使用的 sink 相同)。但它不需要 Copy Fail 所依赖的 algif_aead 模块——即使系统已经应用了已知的 Copy Fail 缓解措施(algif_aead 黑名单),仍然容易受到 Dirty Frag 的攻击。
触发该漏洞需要创建用户命名空间(user namespace)的权限。Ubuntu 有时会通过 AppArmor 策略限制非特权用户命名空间的创建。
链 2:RxRPC Page-Cache Write
RxRPC 是 Linux 内核中实现的远程过程调用协议(AF_RXRPC socket family)。该漏洞与链 1 类似,但不需要命名空间权限。不过,rxrpc.ko 模块在大多数发行版中并未默认加载——唯一的主要例外是 Ubuntu,其默认加载 rxrpc.ko。
2.3 两条链如何互补
两条漏洞链的盲点恰好互相覆盖:
- xfrm-ESP 链在 Ubuntu(启用 AppArmor 阻止 namespace 创建时)失效但 RxRPC 链生效
- RxRPC 链在其他发行版上因 rxrpc.ko 未加载而失效但 xfrm-ESP 链生效
通过链式组合两者,攻击者可以在所有主流 Linux 发行版上获得 root 权限。
2.4 漏洞优势
与大多数内核提权漏洞相比,Dirty Frag 具有几个显著优势:
- 确定性逻辑漏洞 — 不依赖竞态条件(race condition)窗口
- 高成功率 — 没有概率成分,基本可以 100% 触发
- 内核不会崩溃 — 利用失败不会导致 kernel panic 或系统崩溃
- PoC 简洁 — 单个 C 文件,无需复杂的堆布局
3. 影响范围:哪些系统受影响
根据研究人员的测试,以下发行版版本已确认受影响:
- Ubuntu 24.04.4 — 内核 6.17.0-23-generic
- RHEL 10.1 — 内核 6.12.0-124.49.1.el10_1.x86_64
- openSUSE Tumbleweed — 内核 7.0.2-1-default
- CentOS Stream 10 — 内核 6.12.0-224.el10.x86_64
- AlmaLinux 10 — 内核 6.12.0-124.52.3.el10_1.x86_64
- Fedora 44 — 内核 6.19.14-300.fc44.x86_64
- 以及更多......
由于 xfrm-ESP 漏洞影响自 2017 年起的全部内核版本,实际上 2017 年之后发布的几乎所有 Linux 发行版都可能受影响。服务器、桌面和云实例均处于风险之中。
4. 紧急缓解方案
由于官方补丁尚未发布,目前唯一的缓解措施是 禁用漏洞涉及的三个内核模块。执行以下命令:
sh -c "printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' > /etc/modprobe.d/dirtyfrag.conf; rmmod esp4 esp6 rxrpc 2>/dev/null; true"
该命令会:
- 创建
/etc/modprobe.d/dirtyfrag.conf配置文件,阻止 esp4、esp6 和 rxrpc 三个模块加载 - 尝试卸载已加载的这三个模块
执行完成后需要重启系统以确保模块不再加载。
4.1 验证缓解是否生效
lsmod | grep -E '^(esp4|esp6|rxrpc)'
## 如果没有任何输出,说明模块已被正确禁用
4.2 长期修复
请密切关注各 Linux 发行版的安全公告。一旦各发行版完成补丁回溯移植,请立即更新内核:
- Ubuntu/Debian:
sudo apt update && sudo apt upgrade linux-image-* - RHEL/CentOS/Fedora:
sudo dnf update kernel - openSUSE:
sudo zypper update kernel
补丁应用后,记得移除之前创建的模块黑名单文件:
rm /etc/modprobe.d/dirtyfrag.conf
5. 常见问题
Q:Dirty Frag 需要物理访问吗?
不需要。这是一个 本地提权漏洞(LPE),攻击者只需要在目标机器上有一个普通用户 shell。常见场景包括:通过 Web 应用 RCE 获取低权限 shell 后提权、共享主机环境中的横向移动等。
Q:我该如何判断是否受影响?
运行 uname -r 查看内核版本。如果内核版本 ≥ 4.10(2017 年 2 月发布),则很可能受影响。最可靠的方式是执行缓解命令并检查模块加载状态。
Q:Dirty Frag 跟 Dirty Pipe 和 Copy Fail 有什么关系?
三者都属于"页缓存写"漏洞子类。Dirty Pipe(CVE-2022-0847)是第一例。Copy Fail 是第二例,限制了范围但需要 algif_aead。Dirty Frag 是第三例,不需要 algif_aead 且覆盖范围最广。
Q:为什么没有 CVE 编号?
由于保密期被打破(embargo broken),Linux 发行版的协调安全披露流程未能完成。在征得 linux-distros 维护者的同意后,研究人员选择公开披露并表示没有 CVE。每个发行版将来回溯补丁时可能会自行分配 CVE。
Q:Docker 容器受影响吗?
如果容器共享宿主机内核(默认方式),则受影响。容器内的用户可以通过该漏洞获得宿主机的 root 权限。
Q:禁用这些模块会影响哪些功能?
- esp4 / esp6 — IPsec ESP 传输/隧道模式,主要影响 IPsec VPN
- rxrpc — RxRPC 协议(AF_RXRPC),在 Ubuntu 上默认加载但大多数用户并不直接使用