CVE-2026-24291-Windows权限提升漏洞“RegPwn”复现分析
前言
这个漏洞是英国 MDSecLabs 的 Filip Dragovic 发现的,据作者讲述,这个漏洞由于很巧妙,它们在红队评估中从2025年1月就开始使用,直到2026年2月报告给微软后,才在3月的补丁星期二修复,这么看也用够本了,原文只是讲了漏洞的核心部分,本文会讲清楚这个漏洞涉及的概念、如何形成的,如何利用它
原文地址:https://www.mdsec.co.uk/2026/03/rip-regpwn/
01 漏洞复现
个人理解原作者的漏洞复现视频中,最后弹出一个system权限的cmd,应该只是为了演示意图,这个漏洞最终的目的是劫持高权限注册表项,实际利用中,应该还会结合其他的挖掘成功,最终形成稳定的权限提升 + 权限维持,我的复现就先演示劫持高权限注册表项
注意,Microsoft Defender会报毒,要先将Microsoft Defender关闭,下图可以看到,成功修改了注册表项msiserver下的,值名称为ImagePath的值内容
原作者的代码有些混乱,我对代码整理及轻微改动了下,更简洁易读
代码传到:https://github.com/ybdt/evasion-hub/tree/master/11-Privilege-Escalation/0x13-CVE-2026-24291-RegPwn
02 前置知识
想搞懂这个漏洞,需要先掌握下面几个概念,也可以直接看漏洞梳理,发现不懂的概念再过来看
2.1 IL、UIPI、UI Access
IL (Integrity Level) —— 完整性级别
IL 是 Windows 强制访问控制 (Mandatory Integrity Control, MIC) 的核心。它为每个进程和对象分配一个“可信度”标签。
Windows 主要有以下几个级别:
Untrusted (不信任): 匿名登录进程。
Low (低): 典型的沙盒环境(如浏览器的隐身模式、AppContainer)。
Medium (中): 标准用户启动的普通程序。
High (高): 以管理员身份运行的程序(通过 UAC 提权)。
System (系统): 操作系统核心进程。
核心原则: 进程不能向比自己 IL 等级更高的进程发送写入请求。UIPI (User Interface Privilege Isolation) —— 用户界面特权隔离
UIPI 是基于 IL 的一种安全机制。在 Windows Vista 之前,任何程序都可以向其他程序的窗口发送消息(如点击按钮、输入文本)。恶意软件常利用这一点进行“粉碎攻击”(Shatter Attack),通过发送特定的窗口消息来劫持高权限进程。
UIPI 的限制规则:
禁止读取: 低 IL 进程无法查看高 IL 进程的窗口句柄。
禁止写入: 低 IL 进程不能通过 PostMessage 或 SendMessage 向高 IL 进程发送消息(除了极少数安全的消息)。
禁止挂钩: 低 IL 进程无法对高 IL 进程进行界面挂钩(Hooks)。UIAccess —— UI 自动化访问
虽然 UIPI 保护了安全,但它也带来了一个麻烦:屏幕阅读器、放大镜或自动化测试工具通常以“中”或“低”权限运行,但它们必须能够操控“高”权限的窗口。
UIAccess 就是为了打破 UIPI 限制而设计的“特许通行证”。如果一个程序的清单文件(Manifest)中设置了 uiAccess=”true”,它就能跨越 IL 限制向高权限窗口发送消息。
获得 UIAccess 的严格条件:
数字签名: 程序必须经过受信任机构的数字签名。
安装目录: 程序必须位于安全目录中(如 C:\Program Files 或 C:\Windows\System32)。
清单声明: 在 .manifest 文件中明确申请该权限,需要注意 .manifest 是嵌入在 exe 文件中的。
这三个概念紧密相连,共同构成了用户界面特权隔离 (User Interface Privilege Isolation, UIPI) 的核心。简单来说,它们是为了防止“低权限程序”控制“高权限程序”
2.2 安全桌面、用户桌面
用户桌面 (Default Desktop)
就是你每天工作的Windows界面。
运行内容: explorer.exe(文件资源管理器)、浏览器、你的各种应用程序。
安全级别: 相对较低。所有运行在用户桌面上的程序都可以通过窗口消息互相“聊天”(除非受 UIPI 隔离)。
风险: 恶意软件可以尝试在你的用户桌面上叠加一个透明窗口(点击劫持),或者监听你的按键。安全桌面 (Secure Desktop)
当你遇到 UAC(用户账户控制) 弹窗,或者按 Ctrl + Alt + Del 时,屏幕会变暗,只剩下一个对话框。这就是安全桌面。
运行内容: 仅限受信任的系统进程(如 Consent.exe 负责 UAC,或 LogonUI.exe 负责登录)。
隔离机制: 它与“用户桌面”在逻辑上是完全断开的。
消息隔离: 用户桌面上的任何程序(包括病毒)都无法向安全桌面发送任何点击或输入指令。
视觉隔离: 此时你看到的变暗的用户桌面,其实只是系统截取的一张“快照”背景,真实的用户桌面已被挂起。
核心目的: 确保只有“人”物理点击了“是”,而不是某个脚本自动点击了“是”。
为了防止恶意软件(即使是高权限的)通过模拟点击来绕过安全确认,Windows 将界面划分成了不同的物理隔离区域,当你在用户桌面(Session 1)运行一个需要管理员权限的安装包时,系统发出提权请求,Winlogon 立即切换当前的活动桌面,将显示输出切换到安全桌面,你在安全桌面上点击“确定”后,Winlogon 再将控制权切回用户桌面。
2.3 机会锁
机会锁(OpLock - Opportunistic Lock)这项技术经常用在Windows提权漏洞利用中,我之前分析的【Windows任务计划权限提升漏洞分析(CVE-2025-60710)】:https://xz.aliyun.com/news/19366 也用到了机会锁
在 Windows 操作系统中,机会锁(Oplock - Opportunistic Lock)是一种文件锁定机制,最初是为网络文件传输优化的,但在本地提权漏洞中,它常被黑客当作“时间停止器”。
Oplock 的初衷:性能优化
在网络共享环境下(如访问 NAS),客户端如果频繁读写同一个文件,每次都经过网络会话会很慢。
原理:客户端告诉服务器:“我要锁定这个文件,并且假设我是唯一的访问者。”
缓存:服务器说:“行,既然没别人用,你可以把数据缓存在你本地。”
打破锁:当第二个程序(或用户)尝试访问该文件时,服务器会通知第一个客户端:“嘿,别人要用了,赶紧把缓存同步回来,我要撤销你的锁。”漏洞利用中的“黑客用法”:制造竞争(Race Condition)
在 RegPwn 或类似的漏洞中,黑客并不是为了优化性能,而是为了利用 Oplock 的“挂起”特性。
核心逻辑:
抢先占坑:恶意程序先打开一个系统进程必然会访问的文件(例如 oskmenu.xml),并对它设置一个 Exclusive Oplock(独占机会锁)。
引诱目标:恶意程序触发一个高权限动作(如 LockWorkStation())。
强制挂起:当高权限进程(Winlogon)运行到一半,尝试打开 oskmenu.xml 时,系统内核会发现:“咦,这个文件被别人锁了。”
等待通知:此时,内核不会报错,而是让 Winlogon 进入睡眠等待状态,直到恶意程序主动释放这个锁。
OpLock分类如下,提权漏洞利用中,常用的就是Exclusive类型,锁定一个文件后,winlogon想访问这个文件,内核会挂起winlogon并通知我
1 | 类型 描述 |
2.4 注册表符号链接
注册表符号链接 (Registry Symbolic Link) 是 Windows 操作系统中的一个高级概念。你可以把它想象成注册表里的“快捷方式”,但它的功能比普通的快捷方式强大得多,因为它在内核级别起作用。
核心概念与含义
定义: 它是一个特殊的注册表项(Key),它的作用不是存储数据,而是指向另一个注册表项。
透明性: 对应用程序或用户来说,这种链接是“透明”的。如果你访问链接 A,系统会自动把你导向链接 B,程序甚至不知道自己正在通过链接访问数据。
内核实现: 它是通过 Windows 内核(具体是对象管理器 Object Manager)实现的。在注册表编辑器 regedit 中,它们看起来和普通项一模一样,除非你深入查看其底层属性。举例说明
Windows 系统本身就大量使用了这种技术来实现兼容性。
路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet
真相: 这是一个符号链接。它实际上指向 HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001(或 002)。
含义: 当驱动程序或软件想要访问当前的系统配置时,它们只需要访问 CurrentControlSet 这个统一的接口,系统会自动将其重定向到实际生效的那个配置备份上。
0x3 漏洞分析
测试环境:Windows 11 25H2 26200.7840
系统机制梳理
当启动 Windows 辅助功能中的屏幕键盘(osk.exe),系统会创建如下注册表项
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\ATConfig\osk
上述注册表项在启动 osk.exe 前并没有 Accessibility\ATConfig\osk 这部分,启动osk.exe后才会被系统创建,且权限是普通用户完全可控
随后会有2个ATbroker.exe进程进行注册表同步,一个是普通用户权限,一个是System权限,普通用户权限的ATbroker进程会将
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\ATConfig\osk
拷贝到
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\Session1\ATConfig\Osk
其中,HKLM...\ATConfig的权限有些特殊,普通用户不能完全控制,但却能删除项、创建子项、创建链接、等等
进入安全桌面后(进入方式是锁屏 或 Ctrl+Alt+Delete 或 以管理员身份运行),System权限的ATbroker进程,会将
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\Session1\ATConfig\Osk
拷贝到
HKU.DEFAULT\Software\Microsoft\Windows NT\CurrentVersion\Accessibility\ATConfig\osk
可以看到,锁屏前,是没有注册表项 Accessibility\ATConfig\osk 这部分的
锁屏后,出现这部分注册表项
最后,System权限的osk.exe会将
HKU.DEFAULT\Software\Microsoft\Windows NT\CurrentVersion\Accessibility\ATConfig\osk
拷贝到
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\Session1\ATConfig\Osk
漏洞利用
梳理完系统机制后,如何利用这个漏洞就显而易见了,首先伪造注册表项
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\ATConfig\osk
添加一个想覆盖高权限注册表项的值,比如:HKLM\SYSTEM\ControlSet001\Services\msiserver其次在
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\ATConfig\osk
拷贝到
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\Session1\ATConfig\osk
时,将 osk 删除,并创建一个指向想覆盖的注册表项的链接,最终目的是修改高权限注册表项的值
尾语
本文是基于原作者的漏洞分析文章,根据结果倒推原因,正向梳理这个漏洞涉及到的概念、如何形成、如何利用,梳理完发现,接下俩应该通过procmon去监测osk.exe,逆向挖一遍,并尝试挖掘类似漏洞
