Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-7867-disk2root — 针对 udisks2 中 CVE-2026-7867 的武器化本地权限提升漏洞利用,通过 as-user 挂载欺骗绕过 PolicyKit 并获取 root shell。 | Kitploit
工具/GitHubGitHub/azqzazq1/cve-2026-7867-disk2root
权限提升漏洞分析漏洞利用后渗透利用渗透测试学习与教育红队二进制利用实验室与实践
GitHubazqzazq1/cve-2026-7867-disk2root

CVE-2026-7867-disk2root

针对 udisks2 中 CVE-2026-7867 的武器化本地权限提升漏洞利用,通过 as-user 挂载欺骗绕过 PolicyKit 并获取 root shell。

123个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库





Filesystem.Mount → as-user 欺骗 → 授权绕过 → 根上下文挂载 → LPE


概述

CVE-2026-7867 是 udisks2 中的一个本地权限提升漏洞,涉及 Filesystem.Mount D-Bus 方法、as-user 选项、fstab 管理的挂载流程以及存在缺陷的授权处理。

此私有仓库包含在受控实验室环境中验证该问题所使用的技术研究笔记和 PoC 脚本。

该漏洞由以下人员发现并报告:

Azizcan Daştanazqzazq1
Özlem Ozanoz7oz7

该问题已被分配编号:

root@kitploit:~
CVE-2026-7867

执行摘要

该漏洞源于真实 D-Bus 调用者 UID 与由 as-user 挂载选项计算得出的有效 UID 之间存在有缺陷的信任关系。

在易受攻击的流程中,无特权的本地用户可影响挂载执行路径,从而在未触发预期 PolicyKit 授权行为的情况下,以特权/根上下文执行文件系统挂载。

该核心漏洞并不仅仅是“用户可控的挂载选项”。

真正的问题在于:

udisks2 在 fstab 挂载授权和执行期间,无法始终如一地区分原始调用者身份与计算得出的 as-user 身份。


漏洞概览


影响区域

易受攻击的逻辑与 udisks2 内部的 fstab 挂载处理路径相关,尤其是当挂载请求涉及以下内容时:

root@kitploit:~
Filesystem.Mount
as-user
x-udisks-auth
user
users

相关的安全敏感区域包括:

root@kitploit:~
D-Bus caller identity
        ↓
as-user option handling
        ↓
fstab authorization logic
        ↓
PolicyKit decision flow
        ↓
root-context mount execution

攻击流程

root@kitploit:~
┌─────────────────────────────┐
│ Unprivileged Local User     │
└──────────────┬──────────────┘
               │
               │ Filesystem.Mount
               │ with as-user influence
               ▼
┌─────────────────────────────┐
│ udisks2 / udisksd           │
│ privileged system daemon    │
└──────────────┬──────────────┘
               │
               │ fstab logic evaluates
               │ user/auth options
               ▼
┌─────────────────────────────┐
│ Authorization Gap           │
│ mount_other_user not        │
│ enforced in skipped path    │
└──────────────┬──────────────┘
               │
               │ root-context branch reached
               ▼
┌─────────────────────────────┐
│ Filesystem Mounted          │
│ without expected auth flow  │
└──────────────┬──────────────┘
               │
               │ impact depends on mount flags
               ▼
┌─────────────────────────────┐
│ Local Privilege Escalation  │
│ controlled lab validation   │
└─────────────────────────────┘

根本原因

易受攻击的行为源于一个身份混淆缺陷。

系统存在多个身份概念:

root@kitploit:~
real D-Bus caller UID
computed as-user UID
effective mount UID
udisksd daemon privilege context

易受攻击的流程未能一致地强制执行这些身份。

具体而言:

  • 由于使用了 as-user,mount_other_user 可能变为 true
  • x-udisks-auth、user 或 users 等 fstab 选项可能影响授权路径
  • 授权块可能被跳过
  • 在该块之外,mount_other_user 检查无法得到可靠执行
  • 挂载路径可能到达为真正的 root/管理员执行而设计的分支
  • 挂载由特权守护进程上下文执行

结果是本地权限边界被绕过。


x-udisks-auth 问题

x-udisks-auth 选项本应强制实施管理性 PolicyKit 授权流程。

预期行为:

root@kitploit:~
mount request
    ↓
attempt mount as caller
    ↓
permission/auth failure
    ↓
PolicyKit filesystem-fstab check
    ↓
admin approval
    ↓
mount as authorized privileged action

易受攻击的行为:

root@kitploit:~
mount request with as-user influence
    ↓
computed identity affects execution
    ↓
mount succeeds too early
    ↓
PolicyKit auth path is not reached as expected
    ↓
privileged mount state is achieved

这使得易受攻击路径中围绕 x-udisks-auth 的安全模型变得不可靠。


安全模型违反

预期模型:

root@kitploit:~
Unprivileged user
    ↓
D-Bus mount request
    ↓
PolicyKit / fstab authorization
    ↓
restricted mount behavior

被破坏的模型:

root@kitploit:~
Unprivileged user
    ↓
D-Bus mount request with as-user spoofing
    ↓
authorization logic mismatch
    ↓
root-context mount execution

该漏洞尤其严重,因为受影响的进程以提升的特权运行。


影响

成功利用可能允许本地无特权用户通过 udisks2 在根上下文执行路径中挂载文件系统,而无需预期的授权提示。

根据文件系统和挂载标志的不同,影响可能包括:

  • 本地权限提升
  • 未经授权的根上下文文件系统挂载
  • 绕过预期的 PolicyKit 授权
  • 不安全的 fstab 管理设备挂载
  • 受影响实验室配置中基于 setuid 的权限提升
  • 从攻击者控制或预制的文件系统中意外执行文件

利用条件

这是一个本地漏洞。

相关条件包括:


仓库结构

root@kitploit:~
.
├── README.md
├── disk2root.sh              ← main exploit (self-contained LPE)
└── poc/
    ├── setup_lpe_env.sh       ← lab environment setup
    ├── f2_mount_as_user_bypass.sh
    ├── f2_check_nosuid.sh
    ├── f2_suid_test.sh
    ├── f2_final.sh
    └── cleanup_lpe_env.sh

利用 — disk2root.sh

自包含的武器化利用脚本。构建自己的 SUID root 载荷,创建预制磁盘镜像,通过 as-user=root polkit 绕过进行挂载,并进入 root shell。

快速开始

选项 1 — 以 root 身份运行(在任何环境下均有效,包括 SSH):

root@kitploit:~
./disk2root.sh

该脚本会自动:

  1. 编译一个静态 SUID root shell 二进制文件
  2. 在 loop 设备上创建一个 32MB 的 ext4 镜像
  3. 通过 debugfs 以 uid=0 mode=4755 注入该二进制文件
  4. 添加包含 x-udisks-auth 的 fstab 条目
  5. 通过 su 切换到无特权用户
  6. 以 as-user=root 调用 Filesystem.Mount(polkit 绕过)
  7. 执行 SUID 二进制文件 → root shell
  8. 退出时清理所有内容

如需指定从哪个用户进行提权:

root@kitploit:~
./disk2root.sh testuser

如果未指定用户,脚本会选择系统上第一个常规用户,或创建一个临时用户。


选项 2 — 以无特权用户身份运行(桌面 / 活动会话):

root@kitploit:~
./disk2root.sh

在具有活动 polkit 会话的系统上(桌面登录、GNOME/KDE),该脚本完全自包含——它通过 udisksctl 或 D-Bus LoopSetup 创建自己的 loop 设备,通过 as-user=root 挂载,无需任何预先设置即可提权。


选项 3 — 以无特权用户身份运行(SSH,完成设置后):

如果环境已经准备就绪(例如通过以 root 身份运行 poc/setup_lpe_env.sh,或之前以 root 身份运行过 ./disk2root.sh),任何无特权用户都可以再次利用:

root@kitploit:~
./disk2root.sh

该脚本会自动检测存在漏洞的 fstab 条目并使用它们。


清理

root@kitploit:~
./disk2root.sh --cleanup

移除所有产物:fstab 条目、loop 设备、挂载点、临时用户。


策略级联

当以无特权身份运行时,脚本会按顺序尝试多种路径:

root@kitploit:~
[A] Self-contained
    build payload → create ext4 image → debugfs inject SUID binary
    → loop-setup (python3 GIO / udisksctl) → mount as-user=root
    ✓ works on desktop sessions

[B] Fstab fallback
    scan /etc/fstab for x-udisks-auth / user / users entries
    → mount as-user=root → find SUID binary on mounted fs
    ✓ works on SSH when environment is prepared

示例输出

root@kitploit:~
╔═════════════════════════════════════════════════════╗
║  CVE-2026-7867 — disk2root                          ║
║  udisks2 as-user polkit bypass → LPE root shell     ║
╚═════════════════════════════════════════════════════════╝

[*] uid=1002 (testuser) — exploiting...
    fstab: /dev/loop5 → /mnt/disk2root (x-udisks-auth)
    mounted: /mnt/disk2root
    nosuid: not set
    suid: pwn (4755 root:root)

╔═════════════════════════════════════════════════════╗
║  dropping into root shell — type 'exit' to return   ║
╚═════════════════════════════════════════════════════════╝

[+] root shell — uid=0 euid=0
root@target:/tmp#

依赖要求


PoC 脚本(poc/)

研究期间使用的独立验证脚本。这些是最终形成 disk2root.sh 的基础组件。

实验室流程(使用独立 PoC 脚本)

root@kitploit:~
1. Run poc/setup_lpe_env.sh as root
2. su - testuser
3. Run poc/f2_mount_as_user_bypass.sh
4. Run poc/f2_final.sh for full validation
5. Run poc/cleanup_lpe_env.sh as root

或者直接使用集成了上述所有功能的 disk2root.sh。


技术原语

本研究所演示的原语是:

root@kitploit:~
as-user option spoofing inside privileged mount orchestration

关键转换过程是:

root@kitploit:~
unprivileged D-Bus caller
        ↓
spoofed/computed mount identity
        ↓
authorization path confusion
        ↓
root-context mount execution

这就是该问题被归类为本地权限提升漏洞的原因。


此漏洞为何重要

udisks2 通常被视为可信的特权存储管理守护进程。

该层中的漏洞影响巨大,因为它位于以下组件之间:

root@kitploit:~
desktop/session users
D-Bus method calls
PolicyKit authorization
filesystem mount operations
root daemon privileges

此处身份处理中的缺陷会直接影响本地权限边界。


检测思路

防御者可以监控涉及 as-user 的可疑 udisks2 挂载活动。

有用的遥测数据源:

root@kitploit:~
udisksd logs
D-Bus method calls
PolicyKit logs
mount table changes
/proc/mounts
/etc/fstab
journalctl

有用的命令:

root@kitploit:~
findmnt
mount
cat /proc/mounts
journalctl -u udisks2
journalctl | grep -i udisks
journalctl | grep -i polkit

可疑模式:

root@kitploit:~
non-root user triggering Filesystem.Mount
as-user=root usage
unexpected mount without PolicyKit prompt
mounts lacking nosuid/noexec/nodev
setuid execution from recently mounted filesystems
unexpected loop device mounts

缓解措施

更新 udisks2

补丁可用后,请应用厂商提供的修复。

计划修复版本:

root@kitploit:~
udisks 2.11.2

审查 fstab 条目

审计使用以下选项的条目:

root@kitploit:~
x-udisks-auth
user
users

尤其要审查可能包含可执行或 setuid 内容的文件系统。


限制本地 Shell 访问

由于这是一个本地漏洞,减少不受信任的本地访问可降低暴露风险。


监控挂载活动

通过以下方式监控意外的挂载操作:

root@kitploit:~
udisksd

尤其是由非 root 用户触发的挂载操作。


强制使用更安全的挂载标志

在适用情况下,使用:

root@kitploit:~
nosuid
noexec
nodev

这些标志可能会降低挂载后的影响。


加固 PolicyKit 规则

审查与 udisks 挂载操作相关的 PolicyKit 规则。

确保无特权用户未经明确授权无法触发敏感的挂载路径。


修复方向

一个稳健的修复应确保:

  • 保留原始 D-Bus 调用者 UID
  • 计算得出的 as-user UID 不会在授权时替代调用者身份
  • mount_other_user 始终触发正确的 PolicyKit 检查
  • 根上下文挂载执行仅限于真正经过授权的 root/管理员流程
  • x-udisks-auth 始终如一地强制实施身份验证
  • 对相关代码路径(如加密文件系统处理)进行审计

披露时间线


致谢


公开发布计划

在保密期结束后,此仓库可转换为公开研究仓库,包含:

root@kitploit:~
docs/
├── technical-analysis.md
├── root-cause.md
├── lab-setup.md
├── exploit-flow.md
├── detection.md
└── mitigation.md

建议公开的内容:

  • 官方 CVE 链接
  • Red Hat 安全公告链接
  • 上游补丁链接
  • 受影响/已修复版本矩阵
  • 安全复现指南
  • 受控 PoC 使用说明
  • 检测与加固指南

免责声明

此仓库仅用于经授权的安全研究、厂商协调和防御性验证。

PoC 脚本仅用于隔离的测试环境。

请勿在您不拥有或未经明确许可测试的系统上运行这些脚本。

作者不对本研究被滥用负责。



CVE-2026-7867
udisks2 本地权限提升研究



下载工具
字段值
CVECVE-2026-7867
产品udisks2
组件Filesystem.Mount
攻击类型本地权限提升
原语as-user 欺骗
安全边界D-Bus 调用者身份 → 特权挂载执行
授权层PolicyKit / fstab 挂载授权
厂商Red Hat / udisks 上游
状态补丁开发中 / 协同披露
计划修复版本udisks 2.11.2
条件是否必需
本地用户访问是
存在漏洞的 udisks2 版本是
存在 as-user 功能是
合适的 fstab 管理挂载目标是
存在漏洞的授权路径是
远程访问否
工具用途是否必需
busctlD-Bus 挂载调用是
gcc编译 SUID 载荷是(回退到 bash 复制)
mke2fs创建 ext4 镜像是(自包含模式)
debugfs以 uid=0 注入二进制文件是(自包含模式)
python3-gi带 fd 传递的 D-Bus LoopSetup可选(桌面模式)
udisksctlloop 设备设置可选(桌面模式)
脚本用途
setup_lpe_env.sh准备实验室环境(loop 设备、fstab、测试用户)
f2_mount_as_user_bypass.sh验证使用 as-user=root 的 Filesystem.Mount 绕过
f2_check_nosuid.sh验证绕过挂载上的 nosuid/noexec/nodev 标志
f2_suid_test.sh测试已挂载文件系统上的 SUID 二进制执行
f2_final.sh端到端 PoC:设置 → 绕过 → 验证 euid=0
cleanup_lpe_env.sh恢复测试环境
日期事件
2026-04-21向 Red Hat 产品安全团队提交报告
2026-04-21Red Hat 确认收到
2026-04-28厂商确认存在缺陷的逻辑
2026-04-28厂商请求提供 PoC 脚本
2026-04-30厂商请求分配 CVE
2026-04-30PoC 脚本已发送给厂商
2026-05-03共享厂商初始补丁
2026-05-05共享更新后的厂商补丁
2026-05-05CVE-2026-7867 已预留
2026-05-05工单标记为已解决
2026-05-07厂商表示计划在 udisks 2.11.2 中修复
研究人员GitHub角色
Azizcan Daştanazqzazq1发现、分析、PoC 开发、厂商协调
Özlem Ozanoz7oz7研究协作与披露贡献