DavidCarliez/CVE-2026-50454-SYSTEM-Shell-PoC
GitHub: DavidCarliez/Windows-AppResolver-LPE-PoC
针对 Windows UI Core 权限提升漏洞 CVE-2026-50454 的 PoC,演示从非提权管理员进程到 SYSTEM shell 的完整利用链。
Stars: 5 | Forks: 1
# CVE-2026-50454 SYSTEM Shell PoC
CVE-2026-50454 的概念验证。这是一个已在 2026 年 7 月安全更新中修复的 Windows User Interface Core 权限提升漏洞。
该 PoC 从属于本地管理员的普通非提权进程开始,启动一个以 `NT AUTHORITY\SYSTEM` 身份运行的交互式命令提示符。它不演示从标准非管理员账户的提权过程。
## 演示
[](media/cve50454.webm)
## 根本原因
在存在漏洞的构建版本中,`Windows.UI.Storage.dll` 允许零权限的 AppContainer 调用私有的 `AppResolverActivationArgsFactory`,而没有进行所需的授权检查。攻击者为 `ms-settings` 协议提供了一个 AppResolver 提供程序,并调用 `SetAsDefault`,导致 Windows 为攻击者的 ProgID 创建一个有效的受保护关联。
随后启动自动提权的 `fodhelper.exe` 会使用高完整性 administrator token 调用已注册的处理程序。该 PoC 使用该 token 创建一个临时服务,该服务的进程会启动最终的交互式 SYSTEM shell。
该更新在工厂创建 AppResolver 对象之前添加了对 `applicationDefaults` 或 `shellExperience` 的权限检查。零权限的 AppContainer 将被拒绝并返回 `E_ACCESSDENIED` (`0x80070005`)。
Microsoft 将公开的 CVE 影响描述为任意系统文件删除。此 PoC 利用了已修补组件中的权限检查漏洞,并不复现已公布的删除原语。
## 要求
- 处于易受攻击构建版本的 x64 Windows 11
- 运行普通、非提权 PowerShell 窗口的本地管理员账户
- 启用 UAC 和自动提权
- 交互式控制台会话
- 没有现有的基于用户的 `ms-settings` 默认关联
- 安装了 Desktop development with C++ 和 Windows SDK 的 Visual Studio 或 Visual Studio Build Tools
已在 Windows 11 25H2 构建 `26200.8737`(`Windows.UI.Storage.dll` 版本为 `10.0.26100.8737`)上验证。构建版本 `26200.8875` 会拒绝触发。
## 用法
打开一个普通的 PowerShell 窗口。请勿使用**以管理员身份运行**。
```
.\build.ps1
Set-ExecutionPolicy -Scope Process Bypass
.\run.ps1
```
此时应打开一个名为 `CVE-2026-50454 SYSTEM Shell` 的命令提示符。在其中验证 token:
```
whoami
whoami /groups
```
预期身份:
```
nt authority\system
```
完成后请手动关闭 SYSTEM 命令提示符。脚本在正常清理期间会移除临时服务、协议注册、受保护关联以及 AppContainer 配置文件。
## 构建
该仓库仅包含源代码。`build.ps1` 会检测已安装的 Visual Studio 工具链,并构建所需的三个 x64 可执行文件:
```
.\build.ps1
```
生成的 `.exe`、`.obj` 和 `.pdb` 文件已被排除在版本控制之外。
## 已修复行为
在已修补的构建版本中,位于 `C:\Users\Public\CVE50454\appcontainer_result.txt` 的触发日志应包含:
```
CREATE_ARGS_HRESULT=0x80070005
```
不应创建任何受保护的 `ms-settings` 关联或提权进程。
标签:AI合规, C++, CSV导出, Web报告查看器, Windows, 提权, 数据擦除, 本地提权, 概念验证