当前位置:首页>Linux>影响巨大!Linux 提权大洞

影响巨大!Linux 提权大洞

  • 2026-10-11 16:48:01
影响巨大!Linux 提权大洞

影响巨大!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 发行版中默认内置。

两种触发分支差异

1. xfrm-ESP 页缓存写入

  • 依赖:需要非特权用户创建命名空间权限
  • 限制:Ubuntu 常通过 AppArmor 策略拦截普通用户创建命名空间,此场景下该分支无法触发
  • 影响范围:内核提交cac2661c53f3(2017-01-17)起至今所有上游内核

2. 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 环境关键限制

  1. AppArmor 会限制普通用户创建命名空间,导致xfrm-ESP 分支失效;
  2. Ubuntu 默认自带并加载rxrpc.ko,RxRPC 分支是 Ubuntu 下主要利用路径;
  3. 该 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,则该措施无效,只能升级内核。

最新文章

随机文章