在核心 Linux 过去两周内,又发现了一个漏洞(CVE-2026-46300)。该漏洞允许非特权用户通过覆盖页面缓存中的数据来获取 root 权限。该漏洞的代号为 Fragnesia,或 Copy Fail 3.0。它与之前披露的 Copy Fail 和 Dirty Frag 漏洞类似。与 Dirty Frag 一样,新漏洞也存在于 xfrm-ESP 子系统中,但其错误原因不同,需要单独修复。目前已有可用的漏洞利用程序。
该漏洞体现在内核中。 Linux由于意外激活了 Dirty Frag 漏洞补丁,该漏洞于 5 月 5 日之后发布。为了解决内核中的 Fragnesia 漏洞, Linux 提出了一种修复方案。分析表明该方案不足以解决问题,随后准备了第二个补丁。
该漏洞存在于 xfrm 子系统对 TCP 中封装安全有效载荷 (ESP) 封装机制(ESP-in-TCP,RFC 8229)的实现中,该机制用于通过 TCP 隧道传输 IPsec 流量。为了避免不必要的缓冲,使用 AES-GCM 算法的操作是通过对页面缓存中的数据执行异或 (XOR) 运算来实现的。逻辑错误导致页面缓存中指定偏移量处的单个字节被覆盖。重复这些操作可以逐字节地修改页面缓存中任何文件的内容。
所有文件读取操作首先都会从页面缓存中检索内容。如果页面缓存中的数据被修改,文件读取操作将返回替换后的数据,而不是存储在驱动器上的实际信息。利用此漏洞的方法是修改页面缓存中带有 suid root 标志的可执行文件,该文件之前已被读取并插入到页面缓存中。在研究人员提出的利用方法中,页面缓存中 /usr/bin/su 文件的前 192 个字节被替换为启动 /usr/bin/sh 的代码。随后执行“su”实用程序时,加载到内存中的将是页面缓存中修改后的副本,而不是驱动器上的原始可执行文件。
要利用 Fragnesia 漏洞,必须在系统上启用用户命名空间。 Ubuntu 此操作默认处于禁用状态,但可通过“kernel.apparmor_restrict_unprivileged_userns=0” sysctl 或 AppArmor 配置启用。在其他发行版中,非特权用户对“用户命名空间”的访问权限取决于“kernel.unprivileged_userns_clone” sysctl 设置(如果为 0,则禁用)。
内核补丁更新 Linux 发行版中的内核软件包尚未发布。您可以在以下页面查看发行版中漏洞修复的状态: Debian, UbuntuSUSE/openSUSE、RHEL、Gentoo、Arch、Fedora。作为一种变通方法,您可以阻止加载 esp4 和 esp6 内核模块:
sh -c "printf 'install esp4 /bin/false\ninstall esp6 /bin/false\n' > /etc/modprobe.d/dirtyfrag.conf; rmmod esp4 esp6 2>/dev/null; true"
来源: opennet.ru
