针对 CVE-2026-43284 + CVE-2026-43500 "Dirty Frag" 的审计脚本——这是一个链式 Linux 内核本地权限提升漏洞,于 2026-05-07 披露,披露时已有可用的公开利用代码,而各发行版补丁尚未发布。
也被称为 "Copy Fail 2: Electric Boogaloo"——相同的代码路径,不同的漏洞利用作者。
Dirty Frag 将 Hyunwoo Kim (@v4bel) 发现的两个不同的内核漏洞串联起来,二者都针对同一类漏洞——对并非由内核独占拥有的分页缓冲区进行原地解密。
AF_INET / AF_INET6 socket (IPsec ESP)
└── In-place decryption path (commit cac2661c53f3, Jan 2017)
└── splice() feeds page cache pages as destination buffers
└── Plaintext write at attacker-controlled offset in page cache
└── Target SUID binary in memory → root
esp4、esp6f4c50a4034e6AF_RXRPC socket (Andrew File System / RxRPC protocol)
└── Same in-place pattern added to rxrpc (June 2023)
└── Same page-cache write primitive
└── root
rxrpcaa54b1d27fe0| 属性 | Dirty Cow (2016) | Dirty Pipe (2022) | Copy Fail (2026) | Dirty Frag (2026) |
|---|---|---|---|---|
| 竞态条件 | ✅ 必需 | ❌ 否 | ❌ 否 | ❌ 否 |
| 写入粒度 | 任意 | 1 字节对齐 | 4 字节固定 | 完整明文,任意偏移 |
| 磁盘修改 | ✅ | ❌ | ❌ | ❌ |
| 取证痕迹 | ✅ | ❌ | ❌ | ❌ |
| 容器逃逸 | 有限 | 有限 | 可能 | 是(共享页缓存) |
| 公开利用 | ✅ | ✅ | ✅ | ✅ 在补丁发布前 |
| 攻击向量 | 1 | 1 | 1 | 2(esp + rxrpc) |
| 内核范围 | 状态 |
|---|---|
| < 4.14 | ✅ 不受影响 |
| 4.14 – 最新未打补丁版本 | ❌ 存在漏洞 |
包含 f4c50a4034e6 的主线 | ✅ 已修复 |
| 内核范围 | 状态 |
|---|---|
| < 6.4 | ✅ 不受影响(该模式尚未引入) |
| 6.4 – 最新未打补丁版本 | ❌ 存在漏洞 |
包含 aa54b1d27fe0 的主线 | ✅ 已修复 |
| 发行版 | CVE-2026-43284 | CVE-2026-43500 | 已修复版本 |
|---|---|---|---|
| AlmaLinux / RHEL 8 | ❌ 受影响 | ✅ 未随附 | kernel-4.18.0-553.123.2.el8_10 |
| AlmaLinux / RHEL 9 | ❌ 受影响 | ⚠ 仅当安装了 kernel-modules-partner(Devel 仓库)时 | 通过 dnf upgrade |
| AlmaLinux / RHEL 10 | ❌ 受影响 | ❌ 受影响 | 通过 dnf upgrade |
| Ubuntu 20.04–24.04 | ❌ 受影响 | ⚠ 取决于内核 | 通过 apt dist-upgrade |
| Debian stable | ❌ 受影响 | ⚠ 取决于内核 | 仅在 sid 中修复(linux ≥ 7.0.4-1) |
| SUSE / openSUSE | ❌ 受影响 | ❌ 受影响 | 通过 zypper update kernel-default |
| Arch Linux | ❌ 受影响 | ❌ 受影响 | 通过 pacman -Syu linux |
git clone https://github.com/Quaerendir/dirtyfrag-audit
cd dirtyfrag-audit
chmod +x audit_dirtyfrag.sh
./audit_dirtyfrag.sh
远程一行命令(在生产环境运行前请先验证):
curl -fsSL https://raw.githubusercontent.com/Quaerendir/dirtyfrag-audit/main/audit_dirtyfrag.sh | bash
| 代码 | 含义 |
|---|---|
0 | 安全 — 两个 CVE 均不适用 |
1 | 存在漏洞 — 至少一个 CVE 处于活跃状态且无缓解措施 |
2 | 已缓解 — 缓解措施已生效,但仍需打补丁 |
| 检查项 | CVE |
|---|---|
| 内核版本范围(ESP 需 4.14+,rxrpc 需 6.4+) | 两者 |
| 各发行版已修复的内核版本 | 两者 |
esp4 / esp6 模块是否已加载(lsmod) | CVE-2026-43284 |
rxrpc 模块是否已加载(lsmod) | CVE-2026-43500 |
| 内置模块与可加载模块的检测 | 两者 |
modprobe.d 黑名单规则(按模块) | 两者 |
| IPsec XFRM 状态/策略 — 会被中断的活跃会话 | CVE-2026-43284 |
| kAFS / AFS 模块是否在使用 — 活跃的 rxrpc 使用方 | CVE-2026-43500 |
| KernelCare 实时补丁状态 | 两者 |
/proc/sys/vm/drop_caches 的可访问性 | 两者 |
| 容器 / Docker / Kubernetes 环境 | 两者 |
| 当前登录的活跃用户(多租户风险) | 两者 |
| SELinux / AppArmor 状态 | 两者 |
| IPsec/VTI/XFRM 接口检测 | CVE-2026-43284 |
# RHEL / AlmaLinux
dnf clean metadata && dnf upgrade && reboot
# Ubuntu / Debian
apt-get update && apt-get dist-upgrade && reboot
# SUSE
zypper update kernel-default && reboot
# Arch
pacman -Syu linux && reboot
首先,检查是否存在活跃使用:
ip xfrm state # IPsec — if output non-empty, blacklisting breaks IPsec
lsmod | grep kafs # AFS — if loaded, rxrpc is in use
应用变通方案:
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
# IMPORTANT: flush page cache to evict any poisoned pages
echo 3 > /proc/sys/vm/drop_caches
kcarectl --update
kcarectl --patch-info | grep -iE 'CVE-2026-43284|CVE-2026-43500|dirtyfrag'
dm-crypt / LUKS · WireGuard · OpenVPN · SSH · TLS/kTLS · OpenSSL · GnuTLS
IKE 守护进程(strongSwan、libreswan)继续正常运行——仅内核内 ESP 数据包处理被禁用。
MIT — 参见 LICENSE
Quaerendir / Kostur IT SERVICES