特征
描述
Dirty Frag(官方编号 CVE-2024-1086)是 Linux 内核中一个极其严重的安全漏洞。它的绰号延续了 Linux 内核“Dirty”系列漏洞(如 Dirty COW, Dirty Pipe)的传统,暗示该漏洞涉及内存管理中的某种“脏”状态或竞争条件。 简单来说,这是一个 本地提权(Local Privilege Escalation, LPE) 漏洞,允许一个没有任何特殊权限的普通用户,在几秒钟内获得系统的最高权限——Root。核心原理
Dirty Frag 的病灶位于 Linux 内核的 Netfilter 子系统中。Netfilter 是负责防火墙(如 iptables, nftables)和数据包过滤的核心组件。 分片处理错误:当内核处理异常的数据包分片(Fragmentation)时,Netfilter 的 nft_verdict_init 函数在处理特定的“裁决”(Verdict)逻辑时存在逻辑缺陷。 释放后使用(Use-After-Free, UAF):攻击者可以通过精心构造的数据包,诱导内核释放掉一段仍在被使用的内存。 内存篡改:由于这段内存被释放但内核仍认为它有效,攻击者可以利用这块“无主之地”来改写内核对象,最终劫持系统执行流。影响范围
漏洞代码引入:2014 年的 v3.15(由提交 0b29669c 引入)。 上游修复版本:内核官方在 2024 年 1 月底修复。以下稳定版内核(Stable Branches)只要高于这些版本即为安全:v6.7.3+ v6.6.15+ v6.1.76+ v5.15.149+ v5.10.209+ v5.4.269+ v4.19.307+发行版系列 受影响的代号 受影响的内核主版本 安全基准(已修复版本) Ubuntu 23.10 (Mantic) 6.5.x 6.5.0-26.26 或更高 22.04 (Jammy) 5.15.x / 6.2.x / 6.5.x 5.15.0-101.111 或更高 20.04 (Focal) 5.4.x / 5.15.x (HWE) 5.4.0-174.193 或更高 Debian 12 (Bookworm) 6.1.x 6.1.76-1 或更高 11 (Bullseye) 5.10.x 5.10.209-2 或更高 RHEL / CentOS RHEL 9 5.14.0 5.14.0-362.24.2 或更高 RHEL 8 4.18.0 4.18.0-513.18.1 或更高 RHEL 7 3.10.0 3.10.0-1160.108.1 或更高 Alma / Rocky 8.x / 9.x 同 RHEL 版本 2024 年 3 月底发布的更新包 Fedora 38 / 39 6.x 6.7.3-200.fc39 或更高 Alpine Linux 3.15 - 3.19 5.15.x - 6.6.x 升级至 3.19.1 或更高
脚本
check
sh -c 'printf "\n[CVE-2024-1086 Check]\nKernel: %s\nUserNS: %s\nNetfilter: %s\n" "$(uname -r)" "$(sysctl -n kernel.unprivileged_userns_clone user.max_user_namespaces 2>/dev/null | xargs | sed "s/ / \/ /" || echo "Disabled/N/A")" "$(lsmod | grep -q nf_tables && echo "LOADED (Warning)" || echo "CLEAN")"'fix
# Ubuntu/Debian sudo apt update && sudo apt upgrade -y linux-image-generic && sudo reboot # RHEL / CentOS / Alma / Rocky / Fedora / Oracle Linux 系列 sudo dnf update -y kernel && sudo reboot # Alpine Linux 系列 apk update && apk upgrade && reboot
检测结果
alpine
[CVE-2024-1086 Check] Kernel: 6.18.24-0-virt UserNS: 15523 Netfilter: LOADED (Warning) --------------- check pass ----------------- Kernel:6.18 较新内核,补丁早已在源码合入,内核已免疫。 UserNS: 允许适量非特权用户创建命名空间 Netfilter: 模块虽已加载,漏洞函数 nft_verdict_init 在内核版本中已重构解决。oraclelinux 1
[CVE-2024-1086 Check] Kernel: 3.10.0-1160.118.1.el7.x86_64 UserNS: 0 Netfilter: CLEAN --------------- check pass ----------------- Kernel: 版本过低反而更安全。该漏洞的代码是在 Linux 3.15 以后引入的 UserNS: 禁止非特权用户创建命名空间 Netfilter: 未加载 nf_tables 核心模块oraclelinux 2
[CVE-2024-1086 Check] Kernel: 6.12.0-108.64.6.3.el9uek.aarch64 UserNS: 91464 Netfilter: CLEAN --------------- check pass ----------------- Kernel: 6.12,属于非常超前的内核版本,漏洞已修复 UserNS: 允许大量非特权用户创建命名空间 Netfilter: 未加载 nf_tables 核心模块