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) 的配套工具。 ![AlmaLinux 8.10 上的示例输出](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/109228ca53082152.png) ## 快速运行 ``` 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报告查看器, 内核模块检查, 子域名枚举, 安全运维, 应用安全, 数据展示, 无线安全, 本地提权, 漏洞缓解, 系统基线检查, 系统安全, 红队, 网络协议安全, 网络安全, 自动化检查, 隐私保护