当前位置:首页>Linux>【已复现】Dirty Frag: Linux内核LPE深度解析,poc见V4bel/dirtyfrag

【已复现】Dirty Frag: Linux内核LPE深度解析,poc见V4bel/dirtyfrag

  • 2026-10-11 08:08:00
【已复现】Dirty Frag: Linux内核LPE深度解析,poc见V4bel/dirtyfrag

VULNERABILITY RESEARCH · LPE · CVE-2026-31431 / CVE-2026-41940

Dirty Frag:Linux内核本地提权漏洞深度解析

双漏洞链 · 无竞争条件 · 页缓存污染 · PoC已公开 · 补丁未发布

两个页缓存写漏洞的链式利用,无竞争条件实现本地提权,影响 Ubuntu 24.04、RHEL 10、Fedora 44 等主流发行版。PoC 已于 2026年5月8日公开,截至发文补丁尚未发布。

一、漏洞是什么

Dirty Frag(CVE-2026-31431 + CVE-2026-41940)是由安全研究员 Kim Woo Jungyeon 于2026年5月8日公开披露的两个 Linux 内核页缓存写漏洞的组合利用。

页缓存(Page Cache)是 Linux 内核用于缓存磁盘文件内容的内存区域。当你执行 /usr/bin/su 时,内核实际运行的是页缓存中的代码,而非每次从磁盘读取。

核心威力:攻击者可以在不修改磁盘文件的情况下,向页缓存写入恶意代码,让内核执行攻击者的指令——传统文件完整性监控完全无法感知。

二、两个漏洞详情

CVE-2026-31431 — xfrm-ESP 页缓存写

存在于内核 IPsec 子系统的 esp_input() 函数(esp4/esp6 模块)。

影响范围:Linux 4.10+ (2017年1月引入,commit cac2661c53f3)

CVE-2026-41940 — RxRPC 页缓存写

存在于 RxRPC 协议的 rxkad_verify_packet_1() 函数(rxrpc 模块)。

影响范围:Linux 6.4+(2023年6月引入,commit 2dc334f1a63a)

关键特性:两个漏洞均可被触发为向页缓存任意偏移位置写入4字节数据,且具有确定性——不依赖竞争条件,每次执行结果一致。普通本地用户即可触发,无需任何特殊权限。

三、利用过程:两阶段提权

Stage 1:篡改 /usr/bin/su 的页缓存(主路径)

通过 CVE-2026-31431,向 /usr/bin/su 在页缓存中的代码段(偏移 0x78)写入192字节 ELF shellcode:

① 通过 XFRM netlink 接口加载 esp4/esp6 模块(无需 root)

② 触发 esp_input() 漏洞,向 su 的页缓存代码段写入 shellcode

③ shellcode 内容:setgid(0) → setuid(0) → execve("/bin/sh")

④ 执行 su 命令 → 内核从已被篡改的页缓存加载代码 → 获得 root shell

Stage 2:篡改 /etc/passwd(备用路径)

当 Stage 1 受阻时,使用 CVE-2026-41940(rxrpc)通过 PCBC-FCrypt 算法暴力枚举(SplitMix64 PRNG),将 /etc/passwd 特定账号字段修改为无密码 root 身份。

PoC 已公开

仓库:github.com/V4bel/dirtyfrag(约2500行C代码)

仅需本地用户权限 + 本地回环(loopback),无需外网连接

四、受影响系统

发行版
版本
Ubuntu
24.04.4 LTS(内核 6.8.x)
Red Hat Enterprise Linux
10.1(内核 6.12)
CentOS Stream / AlmaLinux
10
Fedora
44
openSUSE Tumbleweed
含内核至 7.0.x
CloudLinux
CL7h / CL8 / CL9 / CL10

补丁状态(2026-05-08):上游内核补丁未合并,Red Hat/Ubuntu 补丁开发中,AlmaLinux 修复版准备测试,KernelCare 实时热补丁开发中。

五、检测方法

① 检测 XFRM 模块异常加载

普通用户进程(非网络管理工具)调用 XFRM netlink 接口是强烈的攻击指示器:

lsmod | grep -E 'esp4|esp6|rxrpc'

若以上模块在非 IPsec/AFS 环境下意外加载,需立即排查。

② 验证 /usr/bin/su 完整性

rpm -Vf /usr/bin/su          # RHEL/Fedoradpkg --verify passwd         # Debian/Ubuntu

注意:磁盘文件校验通过不代表页缓存未被篡改。若怀疑已被利用,立即清除页缓存:

sudo echo 3 > /proc/sys/vm/drop_caches

③ 社区检测规则集

GitHub 仓库 thrandomv/cve-2026-31431-detection 提供 Sigma、Falco、auditd、KQL(Microsoft Sentinel)、EQL(Elastic)规则集,可直接导入 SIEM。

六、缓解措施

即时缓解:禁止内核模块加载

sudo sh -c "  printf 'install esp4 /bin/false\n' >> /etc/modprobe.d/dirtyfrag.conf  printf 'install esp6 /bin/false\n' >> /etc/modprobe.d/dirtyfrag.conf  printf 'install rxrpc /bin/false\n' >> /etc/modprobe.d/dirtyfrag.conf"sudo rmmod esp4 esp6 rxrpc 2>/dev/null; true

重要提示:esp4/esp6 是 IPsec 所需模块,禁用后 IPsec VPN 将失效。若环境依赖 IPsec,可考虑临时切换至 WireGuard。

验证缓解效果

lsmod | grep -E 'esp4|esp6|rxrpc' && echo "WARNING" || echo "OK: 模块已卸载"

七、为什么页缓存攻击难以防御

传统文件完整性监控(FIM)检测的是磁盘文件的哈希变化。Dirty Frag 修改的是内存中的页缓存——磁盘文件保持不变,哈希校验通过,但内存中运行的是攻击者的代码。

这类攻击的有效检测需要同时关注:

▸ 行为维度:异常的内核模块加载、非预期的进程链

▸ 内存维度:内存中运行的代码与磁盘文件内容的差异对比

▸ 网络维度:loopback 上的 XFRM/RxRPC 异常流量

事件时间线

2026-04-29
作者向 netdev 提交 rxrpc 修复补丁(协调封禁)
2026-05-07
第三方泄露部分技术细节,封禁提前破坏
2026-05-08
作者在 oss-security 发布完整漏洞详情 + PoC
2026-05-12
原定协调披露日期(已因泄露作废)

漏洞命名致敬 Dirty Pipe(CVE-2022-0847):同样是页缓存污染,利用路径从"管道"换成了"网络分片(Fragment)"。Dirty Pipe 需要读取权限,Dirty Frag 仅需本地用户权限 + 回环网络接口。

CVE-2026-31431 + CVE-2026-41940 | RHSB-2026-003 | PoC: github.com/V4bel/dirtyfrag | 检测规则: thrandomv/cve-2026-31431-detection | 2026-05-08

最新文章

随机文章