Fragnesia:Linux 内核 XFRM ESP-in-TCP Page Cache 碎片处理提权漏洞
文档版本:v1.0 · 更新日期:2026-05-18 适用对象:安全研究员、系统管理员、DevSecOps 团队
漏洞速览
| 属性 | 值 |
|---|---|
| CVE 编号 | CVE-2026-46300 |
| 漏洞别名 | Fragnesia |
| CVSS 评分 | 7.8 HIGH |
| CVSS 向量 | AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| 漏洞类型 | 本地权限提升 LPE (Page Cache 写入原语 / UAF) |
| 攻击向量 | 本地 Local |
| 权限要求 | 低权限 Low |
| 用户交互 | 不需要 None |
| 公开日期 | 2026-05-13 |
| PoC 状态 | 已公开 |
| 补丁版本 | 上游已提交补丁,Fedora 43 内核 7.0.6 已包含修复 |
| 临时缓解 | 可禁用 XFRM ESP/RxRPC 模块或清理页缓存 |
发现者:V12 Security 团队
关键时间线:
2026-05-13 V12 Security 公开披露
↓
上游提交补丁
↓
Fedora 43 (kernel 7.0.6) 包含修复
↓
各发行版跟进
漏洞简介
Fragnesia(CVE-2026-46300)由 V12 Security 团队于 2026 年 5 月 13 日公开披露。这是两周内第三个被公开的 Linux 内核本地权限提升漏洞——此前 CopyFail(CVE-2026-xxxxx)于 4 月 29 日披露,DirtyFrag(CVE-2026-xxxxx)于 5 月 7 日披露。Fragnesia 与 CopyFail、DirtyFrag 同属一类与 splice() 零拷贝机制相关的 Page Cache 写入原语漏洞。
该漏洞位于 Linux 内核 XFRM 框架的 ESP-in-TCP 子系统中,核心问题在于 skb(socket buffer)共享页面碎片(page fragment)的处理存在缺陷。当 ESP-in-TCP 对 fragment 页面进行处理时,页面释放与引用计数的生命周期管理出现错误,导致释放后使用(Use-After-Free, UAF)以及页缓存污染。攻击者可利用这一缺陷篡改内存中的页缓存内容,实现对只读文件的任意字节写入。
具体攻击路径为:攻击者通过 splice() 系统调用构造恶意数据,经由 ESP-in-TCP 封装的网络路径触发碎片处理缺陷,随后利用内存重分配技术控制已释放页面的内容,将攻击载荷写入目标只读文件(如 /usr/bin/su)对应的页缓存页面。修改后的 su 二进制文件仅在内存中存在(磁盘文件不受影响),攻击者执行 su 即可获得 root shell,实现一键提权。
“Fragnesia” 这一名称暗示了两层含义:“Fragment” 指向页面碎片(page fragment)生命周期管理的错误,“Amnesia”(遗忘)则形象地描述了内核在页面所有权追踪上的”失忆”——忘记正确记录页面的引用状态。该漏洞利用过程具有确定性,不需要依赖竞态条件(race condition),攻击者可以稳定、可靠地完成提权操作。
技术原理
攻击链
1. 配置 XFRM ESP-in-TCP 通道
↓
2. splice() 将 pipe 页面注入 socket 接收路径
↓
3. ESP-in-TCP 处理 fragment 页面,skb 共享页面碎片处理出错
↓
4. 页面碎片被释放但仍有引用存在(UAF)
↓
5. 页缓存页面被释放后仍可访问
↓
6. 攻击者通过内存重分配控制已释放页面内容
↓
7. 实现对只读文件的页缓存内任意字节写入
↓
8. 篡改 /usr/bin/su → 执行获得 root shell
关键差异(与 DirtyFrag 对比)
Fragnesia 与 DirtyFrag 虽同属 Page Cache 写入原语类漏洞,但攻击目标路径存在显著差异:
- DirtyFrag 针对普通的 ESP 协议(IP 协议号 50)和 RxRPC 协议路径。
- Fragnesia 专门针对 ESP-in-TCP 封装路径(使用 TCP 端口 4500,类似 NAT-T 场景)。其碎片生命周期错误涉及
skb_shared_info结构体中的frags[]数组管理。
涉及的内核组件
| 组件 | 角色 |
|---|---|
| XFRM 框架 | IPsec 安全策略与状态管理的基础框架 |
| ESP-in-TCP | ESP 协议经 TCP 封装,用于穿越 NAT 设备 |
| skb 碎片管理 | skb_shared_info.frags[] 中页面碎片的引用与释放 |
| splice() | 零拷贝数据传输系统调用,攻击的入口点 |
| Page Cache | 文件数据在内存中的缓存,攻击的最终写入目标 |
受影响版本
| 发行版 / 组件 | 受影响版本范围 | 修复版本 | 备注 |
|---|---|---|---|
| Linux Kernel (含 XFRM/ESP-in-TCP) | 自 ESP-in-TCP 引入以来的版本 [待验证] | 上游已提交补丁 [待验证] | — |
| Fedora 43 | kernel < 7.0.6 | ≥ 7.0.6 | 已修复 |
| Ubuntu | 受影响 [待验证] | 待发行版安全公告 | 关注 USN 公告 |
| RHEL / AlmaLinux | 受影响 [待验证] | 待发行版安全公告 | — |
| Anolis OS | N/A | N/A | 根据龙蜥社区公告,Anolis OS 不受影响 |
漏洞影响场景
-
普通 Linux 主机本地提权:攻击者以低权限用户身份登录后,一条命令即可获得 root 权限,是此漏洞最直接的利用场景。
-
VPN / IPsec 网关失陷:若攻击者已获得 VPN 或 IPsec 网关的本地访问权限,可利用此漏洞进一步提权,完全控制网关设备。
-
容器逃逸:在具备
CAP_NET_ADMIN能力的容器中,攻击者可借助 XFRM/ESP-in-TCP 配置触发漏洞,从容器内突破至宿主机。 -
云虚拟机接管:云环境中,若租户虚拟机未及时修补内核,攻击者可利用低权限访问完成对整台虚拟机的提权接管。
修复措施
推荐修复(根本解决)
升级至包含补丁的内核版本:
# Fedora 43
sudo dnf update kernel
# 验证内核版本 ≥ 7.0.6
uname -r对于 Ubuntu、RHEL、AlmaLinux 等发行版,请密切关注各发行版的安全公告(USN / RHSA / ALSA),在补丁发布后尽快升级。
临时缓解(无法立即升级时)
1. 禁用 XFRM ESP / RxRPC 内核模块(与 DirtyFrag 缓解措施相同)
sudo modprobe -r esp4 esp6 rxrpc 2>/dev/null || true
echo "install esp4 /bin/false" | sudo tee /etc/modprobe.d/fragnesia-mitigation.conf
echo "install esp6 /bin/false" | sudo tee -a /etc/modprobe.d/fragnesia-mitigation.conf
echo "install rxrpc /bin/false" | sudo tee -a /etc/modprobe.d/fragnesia-mitigation.conf2. 清理页缓存(若怀疑系统已被入侵)
echo 1 | sudo tee /proc/sys/vm/drop_caches3. Kubernetes 环境
- 移除容器中的
CAP_NET_ADMIN能力 - 使用
RuntimeDefaultseccomp 策略 - 确保 Pod Security Standards 处于 enforced 模式
4. 重启清除
由于该漏洞的内存篡改仅在内存中生效、不落盘,重启系统可清除所有内存中的篡改痕迹。
一键检查与执行临时修复脚本
检查脚本
#!/bin/bash
# Fragnesia (CVE-2026-46300) 漏洞检查脚本
echo "=== Fragnesia (CVE-2026-46300) 检查脚本 ==="
echo ""
echo "[1] 内核版本:"
uname -r
echo ""
echo "[2] esp4 模块状态:"
lsmod 2>/dev/null | grep esp4 || echo " 未加载"
echo ""
echo "[3] esp6 模块状态:"
lsmod 2>/dev/null | grep esp6 || echo " 未加载"
echo ""
echo "[4] rxrpc 模块状态:"
lsmod 2>/dev/null | grep rxrpc || echo " 未加载"
echo ""
echo "[5] XFRM ESP-in-TCP 配置:"
ip xfrm state 2>/dev/null | grep -i esp || echo " 未检测到 ESP 相关的 XFRM 状态"
echo ""
echo "=== 检查完成 ==="临时修复脚本
#!/bin/bash
# Fragnesia (CVE-2026-46300) 临时修复脚本
# 注意:此脚本仅作为临时缓解措施,请尽快升级内核
set -e
BACKUP_DIR="/etc/modprobe.d/backup-$(date +%Y%m%d%H%M%S)"
CONF_FILE="/etc/modprobe.d/fragnesia-mitigation.conf"
echo "=== Fragnesia (CVE-2026-46300) 临时修复脚本 ==="
echo "该脚本仅作临时缓解,请尽快升级内核至已修复版本"
echo ""
# 备份现有配置
sudo mkdir -p "$BACKUP_DIR"
echo "[1] 备份现有配置到 $BACKUP_DIR ..."
for f in /etc/modprobe.d/*.conf; do
if [ -f "$f" ]; then
sudo cp "$f" "$BACKUP_DIR/"
fi
done
# 卸载模块
echo "[2] 卸载 esp4 / esp6 / rxrpc 模块 ..."
sudo modprobe -r esp4 2>/dev/null || echo " esp4 未加载或无法卸载"
sudo modprobe -r esp6 2>/dev/null || echo " esp6 未加载或无法卸载"
sudo modprobe -r rxrpc 2>/dev/null || echo " rxrpc 未加载或无法卸载"
# 阻止模块加载
echo "[3] 配置阻止模块加载 ..."
sudo tee "$CONF_FILE" > /dev/null <<'EOF'
install esp4 /bin/false
install esp6 /bin/false
install rxrpc /bin/false
EOF
# 清理页缓存
echo "[4] 清理页缓存 ..."
echo 1 | sudo tee /proc/sys/vm/drop_caches
echo ""
echo "=== 临时修复完成 ==="
echo "* 备份目录:$BACKUP_DIR"
echo "* 阻止配置:$CONF_FILE"
echo "* 回滚命令:sudo rm $CONF_FILE && sudo mv $BACKUP_DIR/*.conf /etc/modprobe.d/"参考资源
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-46300
- V12 Security 披露原文:[待验证]
- 华为 PSIRT 安全通告: https://www.huawei.com/cn/psirt/security-notices/2026/huawei-sn-solpevcfilk-30495562
- 龙蜥社区(Anolis OS)公告:经社区确认,Anolis OS 不受此漏洞影响