近日披露的 Linux 内核本地提权漏洞 Fragnesia(编号 CVE-2026-46300,CVSS 评分 7.8)允许任意低权限本地用户稳定地将权限提升至 root,且整个过程无需利用竞争条件,成为近年来最可靠的本地提权漏洞之一。该漏洞由 V12 安全团队的 William Bowling 发现,属于 Dirty Frag 漏洞家族,与 Dirty Pipe、Copy Fail 等同源,但其根源在于 Linux 内核 XFRM ESP-in-TCP 子系统中的一个独立逻辑缺陷。
漏洞原理:页缓存遭受确定性损坏
Fragnesia 的名称揭示了其机理:内核在套接字缓冲区合并过程中“遗忘”了某个片段是共享的,从而破坏了本不该触碰的内存。具体来说,当 TCP 套接字在已有文件数据被 splice 到接收队列之后转换为 ESP-in-TCP ULP 模式时,内核会错误地将这些队列中的文件页当作 ESP 密文处理。此时,一个 AES-GCM 密钥流字节会被直接异或到只读文件的内核页缓存中,且整个过程完全不需要竞争条件,攻击行为具备确定性。
利用方式:重写 /usr/bin/su 的页缓存
利用这一缺陷,攻击者可以精心选择 IV nonce,以生成任意所需的密钥流字节。通过构建一张 256 项的查找表,将可能的密钥流字节映射到对应 nonce,攻击者便可逐字节地翻转缓存文件中的任意字节。在实际攻击中,攻击者会迭代修改 /usr/bin/su 在页缓存中的前 192 字节,将其替换为一个极小的 ELF 桩代码,该桩代码会调用 /usr/bin/su 并执行 setresuid(0,0,0),随后启动 /bin/sh,从而获取 root shell。关键之处在于,磁盘上的二进制文件完全没有被触碰,被篡改的仅仅是内存中的页缓存。这意味着该利用不仅隐蔽,而且在重启前会持续生效——每次调用被篡改的 su 都会重新产生 root shell。
受影响版本与缓解措施
所有受 Dirty Frag 影响的 Linux 内核版本均受此漏洞影响,即 2026 年 5 月 13 日之前的未修补内核。上游已提交补丁,CloudLinux 表示,已应用 Dirty Frag 缓解措施的客户在获得修补内核前无需额外操作。Red Hat 正在评估现有缓解措施是否能够覆盖 CVE-2026-46300。Microsoft 也敦促用户立即运行更新工具安装补丁,同时指出若暂时无法修补,可采用与 Dirty Frag 相同的缓解手段。
通用缓解步骤如下:
1.卸载相关内核模块:
rmmod esp4 esp6 rxrpc
2.禁止模块自动加载,写入配置文件 /etc/modprobe.d/dirtyfrag.conf:printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n'> /etc/modprobe.d/dirtyfrag.conf
3.清理页缓存并重启:由于漏洞利用后页缓存中的恶意代码会持久存在,必须在离开受影响机器前清除缓存或重启系统:echo 1 |tee /proc/sys/vm/drop_caches
或直接重启。
此外,Wiz(Google 旗下)指出,AppArmor 对非特权用户命名空间的限制可以作为部分缓解措施,增大攻击者的绕过难度;但与 Dirty Frag 不同的是,Fragnesia 的利用无需主机级特权。除禁用 esp4、esp6 及相关 xfrm/IPsec 功能外,建议同时限制不必要的本地 shell 访问、加固容器化工作负载,并加强对异常提权行为的监控。
公开利用与风险
V12 已发布功能完备的概念验证(PoC)代码,并可在 GitHub 获取,极大降低了实际利用的门槛。所有运行 Linux 服务器的组织应将此漏洞视为关键优先级,立即应用上游补丁或落实上述缓解措施,以防 root 权限被非授权获取。