当前位置:首页>Linux>Dirty Frag — Linux 内核本地提权漏洞

Dirty Frag — Linux 内核本地提权漏洞

  • 2026-10-11 12:40:25
Dirty Frag — Linux 内核本地提权漏洞

基本信息

字段内容
名称
Dirty Frag
CVE
待分配(embargo 被打破,提前公开)
发现者
Hyunwoo Kim (V4bel)
公开时间
2026年5月7日
类型
Linux 内核本地提权(LPE)
CVSS
待评定(Critical)
补丁状态
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原地解密
  • 效果:任意4字节写入页面缓存
  • 引入时间: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)
  • 前提条件:不需要user namespace权限
  • 利用方式:通过add_key("rxrpc",...)控制密钥,暴力破解56位fcrypt密钥植入指定明文

两个漏洞互补

  • xfrm-ESP变体:需要创建user namespace,但不需要rxrpc.ko模块。RHEL/Fedora默认可用,Ubuntu常被AppArmor阻止
  • RxRPC变体:不需要user namespace权限,但需要rxrpc.ko模块。Ubuntu默认加载,RHEL/Fedora不包含
  • 两个盲区互相覆盖,几乎所有环境都能被突破

利用流程

  1. 尝试ESP变体:unshare(USER|NET) -> 注册XFRM SA -> splice -> 修改/usr/bin/su的page cache。成功则执行被篡改的su获取root shell,失败走RxRPC变体
  2. 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)
  • RHEL 10.1 (6.12.0-124)
  • openSUSE Tumbleweed (7.0.2-1)
  • CentOS Stream 10 (6.12.0-224)
  • AlmaLinux 10 (6.12.0-124)
  • Fedora 44 (6.19.14-300)

临时缓解措施

在官方补丁发布前,黑名单化受影响模块:

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

最新文章

随机文章