Fragnesia (CVE-2026-46300): 无竞争条件的内存任意写入 root 提权漏洞分析

Listen to this Post

Featured Image

引言

Fragnesia(编号 CVE-2026-46300),亦称 Copy Fail 3.0,是 Linux 内核 XFRM ESP-in-TCP 子系统中新发现的一个本地提权漏洞。与 Dirty Pipe 等传统漏洞不同,Fragnesia 不依赖任何竞争条件,能够实现确定性、高成功率的攻击,任何未经授权的本地用户均可借此稳定获取 root 最高权限。

学习目标

  • 理解 Fragnesia 漏洞的技术原理及其与 Dirty Frag / Copy Fail 漏洞家族的关系
  • 掌握漏洞的检测方法、临时缓解措施以及内核补丁更新流程
  • 学会通过系统命令识别受攻击痕迹并实施应急响应

你应该了解

1. 漏洞技术剖析:XFRM ESP-in-TCP 子系统中的内存损坏

Fragnesia 的根源在于 Linux 内核 XFRM ESP-in-TCP 子系统(即 `espintcp` 模块)中处理共享页碎片时的逻辑缺陷。该子系统通过 TCP 协议处理 IPsec ESP(Encapsulating Security Payload)加密流量。

核心问题在于:当内核在处理 socket buffer(skb) 的合并操作时,未能正确传播 `SKBFL_SHARED_FRAG` 标记,导致系统“遗忘”某个内存碎片仍处于共享状态。当 TCP socket 切换到 `espintcp ULP` 模式时,内核会将已排入接收队列的文件页错误地视为 ESP 密文,并在页缓存(page cache)上原地执行 AES-GCM 解密操作。通过精心构造 IV nonce,攻击者可以将任意目标字节设置为任意值——每触发一次漏洞操作可改写一个字节。

攻击者最终会构建一个 256 项查找表,将每个可能的密钥流字节映射到对应的 nonce,然后逐字节迭代覆盖 `/usr/bin/su` 二进制文件在页缓存中的前 192 字节,注入一个调用 `setresuid(0,0,0)` 并执行 `/bin/sh` 的位置无关 ELF 桩代码。当受害用户或系统随后执行 `su` 命令时,实际上执行的已是注入的恶意代码,从而获得 root shell。

该漏洞最危险之处在于:篡改仅存于内存页缓存中,磁盘上的 `/usr/bin/su` 原文件丝毫无损。因此,传统的文件完整性检查工具(如 `rpm -Va`、`aide`、`tripwire`)无法检测到此类攻击。

2. 漏洞检测与识别

检查当前内核版本是否受影响

 查看当前内核版本
uname -r

检查 espintcp 模块是否已加载
lsmod | grep -E "esp4|esp6|espintcp"

查看内核编译时间(2026年5月13日之前的版本需特别关注)
cat /proc/version

受影响范围:Linux 内核版本在 2026 年 5 月 13 日(上游补丁提交日期)之前发布的所有版本,且 `CONFIG_XFRM` 和 `CONFIG_INET_ESPINTCP` 已启用。

检测可能的入侵痕迹

 检查 /usr/bin/su 的 inode 是否发生变化(比较磁盘与内存页缓存的一致性)
stat /usr/bin/su

检查系统日志中是否有异常的 espintcp 相关记录
dmesg | grep -i "espintcp"
journalctl | grep -i "xfrm"

检查是否有非特权用户尝试创建网络命名空间
ausearch -m USER_NS | tail -20

3. 立即缓解措施

方案一:禁用脆弱模块(无需重启,立即生效)

 临时卸载受影响模块
sudo rmmod esp4 esp6 rxrpc 2>/dev/null

创建 modprobe 黑名单配置,禁止未来自动加载
sudo sh -c 'printf "install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n" > /etc/modprobe.d/dirtyfrag.conf'

验证配置是否生效
cat /etc/modprobe.d/dirtyfrag.conf

注意:禁用 esp4/esp6 模块会破坏依赖 IPsec ESP 协议的网络隧道

【警告】:上述操作会破坏依赖 IPsec ESP 的 VPN 隧道。如果系统依赖 IPsec,建议考虑方案二。

方案二:限制非特权用户命名空间(增加攻击门槛)

 临时禁用非特权用户命名空间
sudo sysctl -w kernel.unprivileged_userns_clone=0

持久化配置
echo "kernel.unprivileged_userns_clone = 0" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

方案三:清除页缓存(清除内存中的篡改内容)

 清除页缓存(清除内存中被篡改的二进制内容)
sudo sh -c 'echo 1 > /proc/sys/vm/drop_caches'

或者直接重启系统(最彻底)
sudo reboot

4. 修补内核更新指南

| 发行版 | 修复状态 | 更新命令 |

|–|-|-|

| Fedora 43/44 | 内核 7.0.6 已包含修复 | `sudo dnf update kernel` |
| Ubuntu 22.04/24.04 | 补丁评估中 | `sudo apt update && sudo apt install linux-image-generic` |
| AlmaLinux / CloudLinux | 测试版内核可用 | `sudo dnf update kernel` |
| Amazon Linux | 不受影响(不提供 espintcp 模块) | — |
| openSUSE | Bug 1265209 已跟踪 | `sudo zypper update kernel` |

 更新后验证修复是否生效
sudo update-grub  Debian/Ubuntu
sudo grub2-mkconfig -o /boot/grub2/grub.cfg  RHEL/Fedora
reboot
uname -r  重启后确认新内核版本

5. 攻击复现与分析(仅限授权测试环境)

以下 PoC 代码来自 V12 Security 团队的公开披露,仅用于安全研究和授权渗透测试。

 克隆官方 PoC 仓库
git clone https://github.com/v12-security/pocs.git
cd pocs/fragnesia

编译 exploit
gcc -o fragnesia fragnesia.c -Wall -Wextra

在授权测试环境中执行(警告:会导致系统被提权)
./fragnesia

如果 exploit 成功,你将获得 root shell
id
 uid=0(root) gid=0(root) groups=0(root)

攻击机制分析:

1. 创建隔离的用户命名空间和网络命名空间,获取 `CAP_NET_ADMIN` 能力

2. 安装使用已知 AES-128-GCM 密钥的 ESP 安全关联(SA)

3. 利用 AF_ALG 接口构建 256 项密钥流查找表

4. 将 `/usr/bin/su` 数据拼接入 TCP 缓冲区,切换至 `espintcp` 模式触发原地解密

5. 获取 root shell

6. Linux 与 Windows 安全对照

| 维度 | Linux (Fragnesia) | Windows 类比 |

||-|–|

| 攻击向量 | XFRM ESP-in-TCP 页缓存写入 | NtQuerySystemInformation 信息泄露 + 句柄提权 |

| 攻击前提 | 非特权本地用户 | 本地低权限用户 |

| 无需竞争条件 | ✅ 确定性攻击 | 部分提权漏洞(如 PrintNightmare)需竞态 |
| 临时缓解 | 模块黑名单 + 命名空间禁用 | AppLocker + 最小权限原则 |

What Undercode Say

  • Fragnesia 标志着内存损坏类漏洞的一个新维度:它不再依赖传统的竞态条件,而是利用内核在“正常”操作路径中的逻辑缺陷,实现确定性任意内存写入。这意味着传统的漏洞缓解策略(如 KASLR、SMAP/SMEP)对此类攻击几乎无效。

  • splice() 系统调用是漏洞链条中的关键放大因子:正如 LWN 社区所指出,splice() 允许将文件页直接注入网络缓冲区,打破了内核各子系统之间的隔离边界。限制或禁用 `splice()` 可作为纵深防御措施。

  • 此次漏洞的爆发频率令人担忧:在两周内连续披露 Copy Fail、Dirty Frag 和 Fragnesia 三个同类别高危漏洞,表明 Linux 内核的 XFRM/ESP 子系统的安全审查机制存在系统性缺陷。系统管理员应密切关注该领域的后续安全公告。

预测

Fragnesia 的披露可能会引发连锁反应:研究人员将持续挖掘 XFRM/ESP 子系统中隐藏的同类逻辑缺陷,预计在未来 3 个月内可能发现更多“Copy Fail”变种漏洞。此外,针对云容器环境的攻击面将进一步扩大——由于容器通常允许多个非特权用户共享同一宿主机内核,Fragnesia 类漏洞将成为容器逃逸攻击的新利器。建议企业安全团队评估是否需要对运行多租户工作负载的生产环境禁用 `CONFIG_INET_ESPINTCP` 或使用 gVisor、Kata Containers 等强隔离容器运行时。

🎯Let’s Practice For Free:

IT/Security Reporter URL:

Reported By: 0xfrost Cve – Hackers Feeds
Extra Hub: Undercode MoN
Basic Verification: Pass ✅

🔐JOIN OUR CYBER WORLD [ CVE News • HackMonitor • UndercodeNews ]

💬 Whatsapp | 💬 Telegram

📢 Follow UndercodeTesting & Stay Tuned:

𝕏 formerly Twitter 🐦 | @ Threads | 🔗 Linkedin | 🦋BlueSky