文章总结: 微步在线披露Linux内核本地权限提升漏洞CVE-2026-43284(代号DirtyFrag),攻击者可通过splice()将只读文件页面注入网络包碎片,利用内核网络协议路径的原地加解密操作污染pagecache实现提权。漏洞影响UOS、RockyLinux等多款操作系统,并提供临时缓解方案:检查内核配置禁用ESP/RxRPC模块、设置user.maxusernamespaces=0、验证模块卸载状态。建议优先升级内核修复漏洞。 综合评分: 85 文章分类: 漏洞分析,漏洞预警,解决方案,应急响应,Linux安全
DirtyFrag漏洞细节及PoC已公开
微步在线
2026年5月8日 11:40 北京
在小说阅读器读本章
去阅读
一、 漏洞概述
微步情报局监测到,Linux Kernel被披露存在本地权限提升漏洞( CVE-2026-43284),代号 “DirtyFrag”。
DirtyFrag是一类 Linux 本地提权漏洞,核心问题是:攻击者可以把只读文件的 page cache页面通过 splice() 放进网络包的sk_buff frag中,随后内核某些网络协议路径在这个frag上执行“原地加解密”操作,导致本不该被修改的只读文件缓存页被写入。磁盘文件没有被直接改写,但后续读取、执行该文件时会看到被污染的page cache内容,从而实现提权。
它和Dirty Pipe、Copy Fail属于相近问题类型,都是围绕page cache、零拷贝路径和内核写入边界假设失效展开。不同点在于Dirty Pipe主要污染pipe buffer,而DirtyFrag污染的是 struct sk_buff的frag。
目前该漏洞细节及 PoC 已公开,微步情报局对部分操作系统进行了验证,UOS、麒麟等信创系统,以及Rocy Linux、Ubuntu等非信创系统均受影响,详细结果如下。
OneSEC可以关注提权相关告警(规则ID:9030):
二、 已验证操作系统及版本
| | | | |
| — | — | — | — |
| 操作系统 | 版本 | 成功与否 | 截图 |
| UOS | 1060 | 否 | |
| UOS | 1070 | 是 |
|
| Rocky Linux | 10.1 | 是 |
|
| Ubuntu | V22.04 | 是 |
|
| AlmaLinux | 8.10 | 是 |
|
三、 临时缓解措施
1. 判断可用的临时缓解方式
先根据内核配置确认相关功能是否可以通过模块方式禁用:
grep -E 'CONFIG_INET_ESP|CONFIG_INET6_ESP|CONFIG_AF_RXRPC' /boot/config-$(uname -r)
判断方式:
● CONFIG_INET_ESP=m / CONFIG_INET6_ESP=m:esp4 / esp6 以模块形式存在,可以通过 modprobe 黑名单临时禁用,并尝试卸载当前已加载模块。
● CONFIG_AF_RXRPC=m:rxrpc 以模块形式存在,可以通过 modprobe 黑名单临时禁用,并尝试卸载当前已加载模块。
● CONFIG_INET_ESP=y / CONFIG_INET6_ESP=y:ESP 功能编译进内核,无法通过 rmmod 或 modprobe 黑名单完全禁用,只能通过升级修复内核、切换不包含该功能的内核,或禁用 user namespace 做辅助降风险。
● CONFIG_AF_RXRPC=y:RxRPC 编译进内核,无法通过卸载模块方式禁用,应优先升级修复内核或切换不包含该功能的内核。
● 如果没有看到 CONFIG_AF_RXRPC,或结果为 CONFIG_AF_RXRPC is not set,说明当前内核未启用 RxRPC。很多发行版默认并不会编译 RxRPC,这种情况下无需针对 rxrpc 模块做禁用处置。
2. 排查 user namespace 状态
ESP 场景
当第 1 节输出 CONFIG_INET_ESP=y 或 CONFIG_INET6_ESP=y,且短期无法升级或切换内核时,可以检查系统是否允许创建 user namespace:
cat /proc/sys/user/max_user_namespaces
如果输出为 0,说明系统已经禁止创建 user namespace,这可以降低 DirtyFrag xfrm-ESP 变体被普通本地用户触发的风险。
如果输出大于 0,且业务确认不依赖 user namespace,可以考虑将其设置为 0 作为 ESP 内建场景下的辅助降风险措施。
如业务确认不依赖 user namespace,可以临时禁用:
sudo sysctl -w user.max_user_namespaces=0
如需重启后保持生效,可以写入独立 sysctl 配置:
echo'user.max_user_namespaces = 0'|sudotee /etc/sysctl.d/99-disable-userns.conf
sudo sysctl --system
ESP 场景下需要注意:
● user.max_user_namespaces=0 只能作为 ESP 变体的辅助缓解,不能替代升级修复内核。
● 如果攻击者已经拥有真实 CAP_NET_ADMIN,或运行在具备相关能力的特权容器 / 特权服务中,禁用 user namespace 不能阻断这类路径。
RxRPC 场景
RxRPC 路径不依赖 user namespace。即使 user.max_user_namespaces=0,如果当前内核启用了 RxRPC,普通用户仍可能通过 add_key(“rxrpc”, …)、socket(AF_RXRPC)、splice() 等接口触发相关路径。
因此:
● 如果第 1 节输出 CONFIG_AF_RXRPC=m,应按第 3 节禁用 rxrpc 模块。
● 如果第 1 节输出 CONFIG_AF_RXRPC=y,rxrpc 已编译进内核,无法通过模块黑名单禁用,应优先升级修复内核或切换不包含该功能的内核。
● 如果没有看到 CONFIG_AF_RXRPC,或结果为 CONFIG_AF_RXRPC is not set,说明当前内核未启用 RxRPC,无需针对 rxrpc 做禁用处置。
3. 评估影响并临时禁用相关模块
只有第 1 节检查结果中出现以下输出时,才适用本节的模块禁用措施:
● CONFIG_INET_ESP=m
● CONFIG_INET6_ESP=m
● CONFIG_AF_RXRPC=m
这些输出表示对应功能以模块形式存在,可以通过 modprobe 黑名单阻止后续加载,并尝试卸载当前已加载模块。
如果输出为 =y,说明对应功能已编译进内核,本节的 modprobe 黑名单和 rmmod 不能完成禁用;应优先升级修复内核、切换不包含该功能的内核,或按第 2 节对 ESP 变体进行辅助降风险。
如果没有看到 CONFIG_AF_RXRPC,或结果为 CONFIG_AF_RXRPC is not set,说明当前内核未启用 RxRPC,无需针对 rxrpc 执行本节禁用命令。
禁用前需要评估影响:
● esp4 / esp6:影响 IPsec ESP,例如 strongSwan、libreswan、站点 VPN、主机到主机 IPsec。
● rxrpc:影响 RxRPC/kAFS,常见于 AFS 相关场景。
● user.max_user_namespaces=0:可能影响 rootless Docker、Podman、LXC、沙箱应用、部分 CI 构建环境。
如果业务不依赖这些功能,可以写入 modprobe 黑名单,并卸载当前已加载模块:
sudosh -c "printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' > /etc/modprobe.d/dirtyfrag.conf"
sudo rmmod esp4 esp6 rxrpc 2>/dev/null ||true
4. 验证缓解是否生效
再次检查模块是否仍然加载:
lsmod |grep -E '^(esp4|esp6|rxrpc)'
如果没有输出,说明当前运行环境中这些模块未加载。
也可以测试是否还能手动加载:
sudo modprobe esp4
sudo modprobe esp6
sudo modprobe rxrpc
预期结果是加载失败。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:微步在线 《DirtyFrag漏洞细节及PoC已公开》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论