一个本地普通用户,不用任何复杂操作,就能拿到服务器的最高权限。这不是电影情节,是刚刚公开的Linux内核漏洞Fragnesia的真实威胁。安全研究员William Bowling发现的这个漏洞,被归类为Dirty Frag家族的新成员——和当年臭名昭著的Dirty Pipe漏洞是亲戚,但攻击方式更隐蔽、更稳定。

Fragnesia的破坏力在于"无需竞态条件"。大多数提权漏洞需要精确的时间窗口,攻击失败率很高;而这个漏洞利用的是内核处理网络数据时的逻辑缺陷,每次都能稳定触发。漏洞藏在XFRM ESP-in-TCP子系统里,当TCP套接字切换到espintcp模式后,内核会把已经排队的文件数据误当成加密报文处理。

打开网易新闻 查看精彩图片

具体怎么运作?攻击者先往TCP接收队列里塞入文件数据,再让套接字切换到ESP-in-TCP模式。这时候内核的AES-GCM解密模块会启动,用一个密钥流字节和只读文件的页缓存做异或运算。关键是攻击者能控制初始化向量(IV),通过预建一张256条记录的查找表,把任意密钥流字节映射到对应的IV值。这意味着可以精确修改内存中的任意字节,每次触发改一个字节。

实战利用时,攻击者用192次触发,把/usr/bin/su的前192字节覆盖成一段ELF存根代码。这段代码调用setresuid(0,0,0)后直接执行/bin/sh,效果等同于输入su命令就弹root shell。更狡猾的是磁盘上的原始文件完全没动,只改了内存里的页缓存。系统管理员用常规文件完整性检查工具扫一遍,报告全是正常的。

影响范围相当广。官方确认所有在2026年5月13日之前的Linux内核版本都受影响,补丁已提交上游但大规模部署需要时间。临时缓解方案是立即卸载三个内核模块:esp4、esp6和rxrpc。可以用rmmod命令直接卸载,或者写进/etc/modprobe.d/dirtyfrag.conf禁止自动加载。

这里有个容易踩的坑:漏洞利用成功后,被篡改的su命令会一直留在页缓存里。即使攻击者 logout 了,下一个普通用户执行su时还是会触发root shell。所以应急处理完必须手动清空页缓存,执行echo 1 | tee /proc/sys/vm/drop_caches,或者直接重启机器。否则你以为是修复了,实际上后门还在内存里等着。

GitHub上已经有公开的概念验证代码。对攻击者来说,复制粘贴就能用;对防守方来说,这意味着漏洞窗口期被急剧压缩。运行Linux服务器的企业,这个补丁的优先级应该调到最高档。