GRO Frag:网络堆栈中的新型 LPE 漏洞 Linux 允许你获取root权限

一个漏洞 GRO Frag - 内核中的本地权限提升漏洞 Linux与网络协议栈中 GRO 和零拷贝 skb 的处理有关。 公开记录中没有显示最初发现的确切日期。根据开源证据,可以确定两个日期:修复程序在 netdev 邮件列表中进行了讨论。 20的五月2026年其中,该漏洞已被描述为适用于覆盖页面缓存,并且已发布了公开的 PoC。 GitHub 要点 22的五月2026年.

在安装已修补内核之前,可暂时通过 sysctl 命令 `kernel.io_uring_disabled=1` 来限制攻击途径。此设置可阻止非特权进程创建新的 io_uring 实例,除非它们包含在允许的 io_uring_group 中;如果 group 值为 -1,则只有具有 CAP_SYS_ADMIN 权限的进程才能访问。这只是一个缓解措施,并非彻底的修复方案。

问题出在 skb_gro_receive() 函数中:合并 GRO 数据包时,内核可能在未正确检查零拷贝状态和 SKBFL_MANAGED_FRAG_REFS 标志的情况下,将片段从一个零拷贝 skb 传输到另一个 skb。结果,原始 skb 没有单独引用的内存页可能会被错误释放,导致释放后使用 (use-after-free)。该补丁明确指出这种情况会导致 UAF,并且还指出,已识别的变体适用于覆盖页面缓存。

已发布的 PoC 将该漏洞描述为: LPE 通过 GRO 管理碎片 UAF 使用 io_uring SEND_ZC 和 veth 虚拟网络接口。代码注释表明受影响的内核 Linux 6.0年即使是非特权用户也可以利用此漏洞,但需要可用的 io_uring;修复方法名为 犯罪 4db79a322db8 更改“net: gro: 不要合并 zcopy skbs”。


就后果而言,GRO Frag 与 Copy Fail 和 Dirty Frag 属于同一类危险错误:攻击者利用本地非特权访问权限篡改页面缓存(即内存)中的数据,而无需修改磁盘上的文件。这类错误尤其危险,因为它们会破坏只读文件与内核和进程在后续访问中实际看到的内容之间的界限。 前面已经描述过。 这个类是一种利用页面缓存损坏来获取 root 权限的实用方法。

截至发稿时,根据现有报告,尚未为 GRO Frag 分配具体的 CVE 编号。作为临时措施,管理员应考虑将内核更新到已修补的版本,并采取针对类似本地权限提升 (LPE) 的通用缓解措施:在适当情况下限制非特权用户命名空间、控制 io_uring 的使用,以及监控与本地权限提升相关的可疑链。对于相关的 Copy Fail/DirtyFrag 攻击,Elastic 还建议将修补漏洞与检测底层利用原语相结合。

底层漏洞利用原语并不是“现成的黑客攻击”本身,而是构建漏洞利用的基本技术。

在 GRO Frag 的上下文中,这可能不意味着检测到“用户已成为 root 用户”这一现成的事实,而是试图注意到漏洞利用程序在提升权限过程中使用的各个可疑操作。

来源: linux.org.ru

为具有 DDoS 保护、VPS VDS 服务器的站点购买可靠的主机 🔥 购买具备 DDoS 防护的可靠网站托管服务,包括 VPS 和 VDS 服务器 | ProHoster