Dirty Frag: 一个通用的 Linux 本地提权漏洞
Linux 内核再次面临严峻的安全挑战,因为发现了一个名为 "Dirty Frag" 的通用本地提权 (LPE) 漏洞。该漏洞允许未经授权的用户在所有主流 Linux 发行版上获取 root 权限,其影响程度与之前的 "Copy Fail" 漏洞如出一辙。
Dirty Frag 之所以特别危险,是因为它能够针对页缓存 (page cache) 进行攻击,允许攻击者在没有磁盘写入权限的情况下,在内存中修改关键的系统二进制文件或配置文件。由于该漏洞是在禁令期被打破后披露的,最初在社区尚未获得即时补丁或 CVE 时就已冲击了社区。
攻击机制
Dirty Frag 并非单一漏洞,而是两个独立漏洞的组合。它利用了某些晦涩的套接字地址族 (socket address families) 和内核模块,尽管这些模块仅被极少数用户使用,但它们在许多发行版中通常都是默认启用的。
ESP 路径
一个主要的攻击向量涉及 esp4 和 esp6 模块。通过利用这些模块,攻击者可以覆盖目标二进制文件的页缓存。在提供的概念验证 (PoC) 中,攻击者针对 /usr/bin/su。通过将二进制文件页缓存的前 160 个字节覆盖为一个极简的 x86_64 root-shell ELF,攻击者可以将原本需要身份验证的 su 命令转换为一个能立即以 root 用户身份执行 /bin/sh 的工具。
RxRPC 路径
作为一种备选方案(特别是在像 Ubuntu 这样其他路径可能被沙箱化的系统中),该漏洞利用了 rxrpc (以及 rxkad) 模块。此路径使用一种更复杂的原语来修补 /etc/passwd 中的 root 入口。
具体而言,它采用了一种 "three-splice" 技术来修改 root 用户的条目,使其具有空密码字段并将其 shell 设置为 /bin/bash。由于许多系统配置了 pam_unix.so nullok,空密码字段允许攻击者运行 su - 并无需提供任何密码即可获得 root 访问权限。
披露争议
Dirty Frag 的发布伴随着负责任披露流程的崩溃。根据披露时间线:
- 2026 年 4 月 29 日: 研究人员向
security@kernel.org和netdev邮件列表提交了 RxRPC 漏洞及其武器化利用程序。 - 2026 年 5 月 7 日: 信息在 5 天的禁令期内被分享到了
linux-distros邮件列表。 - 2026 年 5 月 7 日: 一个无关的第三方公开发布了有关 ESP 漏洞的信息,打破了禁令期。
- 2026 年 5 月 7 日: 紧随禁令期被打破之后,研究人员发布了完整的 Dirty Frag 文档和利用程序代码。
技术洞察与社区反应
安全社区注意到这类漏洞中存在一种反复出现的模式。从 "Dirty Pipe" 到 "Copy Fail" 再到现在的 "Dirty Frag",这表明页缓存页面的只读保护强制执行仍然是脆弱的。
AI 在漏洞研究中的作用
一些研究人员引发了关于在该领域使用大语言模型 (LLMs) 的辩论。一位评论者指出,虽然 AI 可以提供即时答案,但它可能会阻碍研究的 "探索" 阶段:
"我发现使用 AI 进行漏洞研究真的会阻碍我的创造力... 你无法看到周围发生了什么。它就像一个精灵——你得到的是你要求的,而且仅此而已。"
相反,其他人认为 LLMs 正在加速补丁被逆向工程为武器化利用程序的的速度,使得传统的 "静默补丁" 模型变得过时。
发行版默认配置
对于为什么一些可选的内核功能——使用率不足 0.1% 的用户——在主流发行版中被默认启用,存在着巨大的批评。这种默认内核配置中的 "臃肿" 显著增加了 LPE 的攻击面。
缓解措施与防御
在官方补丁完全部署到所有发行版之前,建议采取以下几种缓解措施:
1. 禁用漏洞模块
用户可以手动禁用受影响的模块来阻断攻击向量:
sh -c "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"
2. 限制未经授权的用户命名空间
许多此类利用程序依赖于未经授权的用户命名空间来在网络命名空间内获得必要的权限(如 CAP_NET_RAW)。禁用此功能可以同时阻断 ESP 和 RxRPC 路径:
echo 1 | sudo tee /proc/sys/kernel/apparmor_restrict_unprivileged_userns
注意:这可能会破坏一些应用程序的沙箱,例如现代 Web 浏览器使用的沙箱。
3. 使用极简内核
此次事件再次引发了要求发行版转向更具定制化方法的呼吁,即默认提供极简内核,并仅在用户明确需要时才要求用户显式启用专门的网络模块。