CVE-2025-6019:udisks2 XFS 调整大小 TOCTOU 权限提升
此仓库包含 CVE-2025-6019 的概念验证 (PoC) 漏洞利用代码,该漏洞是 udisks2 中的一个竞争条件漏洞,允许通过 XFS 文件系统调整大小实现本地权限提升。
该利用代码设计为适用于满足以下条件的任何 Linux 系统,具有通用性:
易受攻击的服务:udisks2(启用了 D-Bus 访问)。
文件系统工具:已安装 xfsprogs(特别是 mkfs.xfs)。
架构:无关(可在 x86、x64、ARM 等架构上运行)。
该利用代码已在以下配置上验证通过:
weapon.py 脚本会自动处理环境 PATH 设置以定位 mkfs.xfs,该命令通常被限制在 sbin 目录中。利用过程需要一个通过 Protofile 精心构造的 XFS 镜像。这允许我们在镜像创建阶段定义包含 SUID root 二进制文件(pwnbash)的文件系统结构,而无需 root 权限。mkfs.xfs -p 选项使用此模板将 SUID 位直接写入镜像的元数据。
标准用户在远程会话(SSH、Docker)中受限制,无法使用 udisks2。运行此脚本以伪造本地会话(seat0):
python3 bypass.py
使用 weapon.py 生成 SUID 镜像。此脚本利用 XFS protofile 嵌入一个具有 4755 权限的 shell。
python3 weapon.py
执行 trigger.sh 以开始向 udisks2 发送大量 D-Bus 调整大小请求。这会强制守护进程在 /tmp/blockdev.XXXXXX 中创建临时挂载点。
chmod +x trigger.sh
./trigger.sh
由于在资源受限的环境中自动脚本可能不稳定,建议使用手动方法:
监控 /tmp 中的临时挂载点:
watch -n 0.1 "ls -la /tmp"
识别目标:查找具有全局可读权限(例如 drwxr-xr-x)的目录,而不是默认的强化权限 drwx------。
执行载荷:识别后,进入目录并执行 shell:
cd /tmp/blockdev.Q797J3 # 示例目录名称
./pwnbash -p
结果:如果在竞争窗口内(在应用 nosuid 标志之前)执行,你将获得 root shell。
bypass.py:配置文件,用于伪造本地会话(seat0)并通过 ~/.pam_environment 绕过 Polkit 限制。
weapon.py:使用 XFS Protofile 模板的 SUID 镜像生成器。
trigger.sh:针对 udisks2 文件系统大小调整的 D-Bus 竞争条件触发器。
有关详细分析:
👉 NetaCoding - https://netacoding.com/posts/udisks2-cve_lpe/
本项目仅用于教育和授权的安全测试目的。未经授权访问计算机系统是违法的。