CVE-2026-43284 / CVE-2026-43500 — "Dirty Frag" Linux 内核本地提权漏洞
影响所有主流 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)
- 攻击者在用户命名空间内获取
CAP_NET_ADMIN - 注册 XFRM 安全关联(SA)
- 通过 loopback 发送 UDP 报文,其 payload 包含通过 splice 固定的页缓存页
- 内核对该页进行原地 AEAD 解密,写入攻击者控制的字节
- 重复利用此原语覆盖
/usr/bin/su的 ELF 头部
CVE-2026-43500(RxRPC)
- 不需要用户命名空间 —
socket(AF_RXRPC)和add_key("rxrpc", ...)均无需特权 - 使用
pcbc(fcrypt)进行 8 字节写入(精度稍差,需爆破) - 目标:
/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 补丁 |
参考资料
💬 评论