haydenjames/dirty-frag-check
GitHub: haydenjames/dirty-frag-check
针对「Dirty Frag」Linux 内核本地提权漏洞(CVE-2026-43284 / CVE-2026-43500)的只读检测脚本,通过多维度信号判断主机是否受影响,适用于单机和大批量主机群场景。
Stars: 3 | Forks: 1
# Dirty Frag 检查 (CVE-2026-43284 / CVE-2026-43500)
“Dirty Frag” Linux 内核本地提权漏洞的只读检查工具
([CVE-2026-43284](https://access.redhat.com/security/cve/CVE-2026-43284),
[CVE-2026-43500](https://access.redhat.com/security/cve/CVE-2026-43500))。
检查内核版本、模块状态、KernelCare livepatch,以及您添加的任何
modprobe 黑名单。不运行漏洞利用代码。
[CVE-2026-31431-check](https://github.com/haydenjames/CVE-2026-31431-check) 的配套工具。

## 快速运行
```
curl -fsSL https://github.com/haydenjames/dirty-frag-check/releases/latest/download/dirty-frag-check.sh | bash
```
如果您不信任通过管道传递给 bash 的方式,请先阅读它:
```
curl -fsSLO https://github.com/haydenjames/dirty-frag-check/releases/latest/download/dirty-frag-check.sh
less dirty-frag-check.sh
chmod +x dirty-frag-check.sh && ./dirty-frag-check.sh
```
固定到某个发布标签以进行变更控制:`https://raw.githubusercontent.com/haydenjames/dirty-frag-check/v1.0.4/dirty-frag-check.sh`。
使用 `-q` 输出一行主机群结果。使用 `-h` 获取帮助。退出码:0 表示正常,1 表示存在漏洞,2 表示未知。
## 主机群使用
```
# parallel-ssh
parallel-ssh -h hosts.txt -i 'bash -s -- -q' < dirty-frag-check.sh
# ansible
ansible all -m script -a "dirty-frag-check.sh -q"
```
退出码(0 表示正常,1 表示存在漏洞,2 表示未知)适用于任何按状态进行聚合的工具。
## 要求
需要 bash 4+ 以及常用的 `awk`/`grep`/`sed`/`lsmod`/`modprobe`。检查本身不需要 root
权限。应用缓解措施确实需要 root 权限。
## 检查内容
1. **模块状态。** 安全公告涉及的模块 —
`esp4`、`esp6`、`ipcomp`、`ipcomp6` (CVE-2026-43284) 和 `rxrpc`
(CVE-2026-43500) — 是已加载、可用还是缺失。
2. **缓解措施。** 查找 modprobe 黑名单文件,并通过
`modprobe -n -v` 验证黑名单是否实际生效。报告 SELinux 和
AppArmor 状态。通过 `kcarectl --patch-info` 检测 KernelCare livepatch。
3. **内核包与运行中的内核。** 捕获已安装修补过的内核但尚未重启进入该内核的情况。
4. **运行中的内核与已知修复版本。** 对于 RHEL 系列发行版
(AlmaLinux、Rocky、RHEL、CloudLinux),将 `uname -r` 与该版本
供应商发布的修复版本进行比较。尽力而为;请结合您的发行版跟踪器进行核对。
## 结论
- **OK** — 已应用 KernelCare livepatch,运行中的内核达到或高于发布的修复版本,或所有相关模块均已列入黑名单。
- **MITIGATED** — 内核未打补丁,但每个入口模块都已列入黑名单,因此无法触发该漏洞。请尽快打补丁。
- **REBOOT NEEDED** — 已安装修补过的内核,但您仍在使用旧内核。
- **VULNERABLE** — 运行中的内核确认早于修复版本且有可用的内核升级,或者模块已加载但升级待处理。
- **WAITING ON VENDOR PATCH** — 运行中的内核早于上游修复版本,当前没有可用的内核升级。这在因版本构建而落后于 AlmaLinux 的 Rocky/CloudLinux 上很常见,或者当发行版在不同的版本字符串下进行反向移植时也会出现。
- **AT RISK** — 尚未拥有 Dirty Frag livepatch 的 KernelCare 管理主机,或者模块可用但升级待处理。
- **LIKELY PATCHED** — 模块已加载,但运行中的内核达到或高于发布的修复版本。脚本无法检查已加载模块的补丁级别;遵从供应商元数据。
- **UNKNOWN** — 该发行版没有修复版本表(Ubuntu、Debian、TuxCare ELS)且没有其他强烈信号。请交叉对照发行版跟踪器。
## 临时缓解措施
对于 CVE-2026-43500 (rxrpc),在撰写本文时,某些发行版的上游修复已经滞后。
如果您需要在内核更新可用之前关闭第二个漏洞利用途径,请将模块加入黑名单:
```
sudo tee /etc/modprobe.d/disable-dirty-frag.conf <<'EOF'
install esp4 /bin/false
install esp6 /bin/false
install ipcomp /bin/false
install ipcomp6 /bin/false
install rxrpc /bin/false
EOF
sudo rmmod rxrpc ipcomp6 ipcomp esp6 esp4 2>/dev/null || true
```
如果 `rmmod` 提示“module is in use”,则说明系统中有某些程序正在主动使用
IPsec 或 AF\_RXRPC(例如某些 VPN、AFS 客户端、strongSwan、Libreswan)。
不要强制卸载它。请改为给内核打补丁并重启。
KernelCare / TuxCare ELS 用户:针对 CVE-2026-43284 的 livepatch 涵盖了
此内容,无需重启。请检查 `kcarectl --patch-info`。
## 目标
面向 AlmaLinux 8/9/10、Rocky、RHEL、CloudLinux 8/9/10、Ubuntu、
Debian 和 CentOS 7 (TuxCare ELS / KernelCare)。固定版本
表特定于 RHEL 系列;Ubuntu/Debian 会回退到
包管理器的最新状态。请对照您的发行版的跟踪器确认任何绿色的结论。
## 讨论
- AlmaLinux 公告:[Dirty Frag](https://almalinux.org/blog/2026-05-07-dirty-frag/)
- CloudLinux / KernelCare:[缓解措施与内核更新](https://blog.cloudlinux.com/dirty-frag-mitigation-and-kernel-update)
- cPanel:[安全公告](https://support.cpanel.net/hc/en-us/articles/40313772552727)
- 配套检查工具:[CVE-2026-31431-check](https://github.com/haydenjames/CVE-2026-31431-check)
- 问题:[GitHub](https://github.com/haydenjames/dirty-frag-check/issues)
## 许可证
MIT — 请参阅 [LICENSE](LICENSE)。
标签:AlmaLinux, Ansible, AppArmor, Bash, CVE-2026-43284, CVE-2026-43500, Dirty Frag, KernelCare, Linux内核安全, PB级数据处理, RedHat, SELinux, Shell脚本, Web报告查看器, 内核模块检查, 子域名枚举, 安全运维, 应用安全, 数据展示, 无线安全, 本地提权, 漏洞缓解, 系统基线检查, 系统安全, 红队, 网络协议安全, 网络安全, 自动化检查, 隐私保护