基本信息
| 字段 | 内容 |
|---|
| |
| |
| |
| |
| |
| |
| ESP补丁已合入上游netdev(5/7),RxRPC补丁尚未合入,发行版均未发布正式修复 |
漏洞概述
Dirty Frag 串联了两个独立的内核页面缓存(page cache)写入漏洞,可在几乎所有主流Linux发行版上实现本地提权到root。属于Dirty Pipe / Copy Fail同类bug class的扩展。
关键特点:
- 确定性逻辑错误,不依赖竞态条件(race condition)
- 不需要时间窗口,利用失败不会kernel panic
- 即使已应用Copy Fail(CVE-2026-31431)的algif_aead黑名单缓解,仍然可以利用
- 只修改内存中的page cache,磁盘上的文件不被篡改
两个漏洞详情
漏洞1:xfrm-ESP Page-Cache Write
- 位置:IPsec (xfrm)子系统,esp_input函数
- 根因:esp_input绕过了skb_cow_data()的写时复制(COW)检查,直接在skb的frag上执行crypto_authenc_esn_decrypt原地解密
- 引入时间:2017年1月(commit cac2661c53f3),潜伏近9年
- 前提条件:需要CAP_NET_ADMIN(通过unshare(CLONE_NEWUSER|CLONE_NEWNET)获取)
- 同一个commit曾导致CVE-2022-27666(CVSS 7.8)
漏洞2:RxRPC Page-Cache Write
- 位置:AFS/RxRPC协议栈,rxkad_verify_packet_1函数
- 根因:对skb frag执行原地pcbc(fcrypt)解密,修改前8字节
- 引入时间:2023年6月(commit 2dc3341a63a)
- 利用方式:通过add_key("rxrpc",...)控制密钥,暴力破解56位fcrypt密钥植入指定明文
两个漏洞互补
- xfrm-ESP变体:需要创建user namespace,但不需要rxrpc.ko模块。RHEL/Fedora默认可用,Ubuntu常被AppArmor阻止
- RxRPC变体:不需要user namespace权限,但需要rxrpc.ko模块。Ubuntu默认加载,RHEL/Fedora不包含
利用流程
- 尝试ESP变体:unshare(USER|NET) -> 注册XFRM SA -> splice -> 修改/usr/bin/su的page cache。成功则执行被篡改的su获取root shell,失败走RxRPC变体
- RxRPC变体:暴力破解fcrypt密钥 -> 修改/etc/passwd中root行的密码字段为空 -> 执行su -> PAM nullok接受空密码 -> root shell
ESP变体将/usr/bin/su前192字节替换为微型ELF payload(setgid(0); setuid(0); execve("/bin/sh")),setuid位不变,一次execve即获取root。
已验证受影响的系统
- Ubuntu 24.04.4 (6.17.0-23-generic)
- openSUSE Tumbleweed (7.0.2-1)
- CentOS Stream 10 (6.12.0-224)
- AlmaLinux 10 (6.12.0-124)
临时缓解措施
在官方补丁发布前,黑名单化受影响模块:
sudo sh -c "printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' > /etc/modprobe.d/dirtyfrag.conf; rmmod esp4 esp6 rxrpc 2>/dev/null; true"
注意:如果系统使用了IPsec VPN,禁用esp4/esp6会断开VPN。
补丁安装后恢复:sudo rm /etc/modprobe.d/dirtyfrag.conf
来源
- GitHub PoC:https://github.com/V4bel/dirtyfrag
- CloudLinux公告:https://blog.cloudlinux.com/dirty-frag-mitigation-and-kernel-update
- The Hacker News:https://thehackernews.com/2026/05/linux-kernel-dirty-frag-lpe-exploit.html