Windows InstallService 本地提权漏洞 “Dark Elevator”:CVE-2026-50343 利用代码已公开,标准用户即可一键 SYSTEM

2026 年 8 月初,独立安全研究人员 Daniel Wade 公开了 Windows InstallService 组件本地权限提升漏洞 CVE-2026-50343 的完整 PoC 与利用脚本,并将其命名为 “Dark Elevator”。该漏洞 CVSS 评分 7.8,触发链路短且无需管理员权限、无 UAC 提示、无需重启,攻击成功后即可在 Microsoft Store 安装服务(InstallService,宿主于 svchost.exe,以 NT AUTHORITY\SYSTEM 权限运行)的进程上下文中执行任意代码。微软已在 2026 年 7 月补丁星期二发布修复,但利用代码公开显著提高了该漏洞被自动化工具库整合的速度。

事件概述

InstallService 是 Windows 中负责 Microsoft Store 应用安装与更新的核心组件,参与后台维护、插件加载、跨设备内容投放等流程。Microsoft Defender 团队曾多次观察到此服务被勒索软件集团、APT 组织与”AI 渗透测试”工具滥用。该漏洞的根因不是单一逻辑错误,而是”ACL 错配”与”受信任服务加载不受信 DLL”两个问题叠加:

  • ACL 错配HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\InstallService\State\PlugInList...\StaticPluginMap 默认对标准用户开放写入权限;
  • 特权 DLL 加载:当 InstallService 在 SYSTEM 上下文读取 StaticPluginMap 时,会通过 COM 类的 CLSID 加载关联的 InprocServer32 DLL,而 Windows 自带的某 COM 类({E9F83CF2-E0C0-4CA7-AF01-E90C70BEF496},CrossDevice 流式组件)恰好把它的 DLL 注册在 %ProgramData%\CrossDevice\CrossDevice.Streaming.Source.dll,且 %ProgramData% 是标准用户可写目录。

把这两点拼起来,等价于”标准用户决定 SYSTEM 进程加载哪个 DLL”——这是教科书级的特权 DLL 接管路径。

技术细节

触发条件

  • 受害主机:Windows 11 25H2(build 26200.xxxx)已实测可稳定复现,其它安装 Microsoft Store 的 Windows 版本预期同样存在风险;
  • 攻击者权限:本地标准交互账户,无需管理员、无 UAC 弹窗;
  • 攻击路径:仅需一次 WinRT API 调用 Windows.ApplicationModel.Store.Preview.InstallControl.AppInstallManager.SearchForAllUpdatesAsync(),促使 InstallService 检查更新并加载被污染的注册表项。

完整利用流程(PoC 复现)

  1. 准备阶段:编译或下载 x64 / x86 / ARM64 三套 ShellCode DLL,并放置到 C:\Users\Public\isp_exploit.dll 或自选目录;
  2. 注册表写入:
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\InstallService\State\PlugInList\MyPlugin" /v "State" /t REG_DWORD /d 1 /f
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\InstallService\State\StaticPluginMap" /v "MyPlugin" /t REG_SZ /d "%ProgramData%\CrossDevice\CrossDevice.Streaming.Source.dll" /f
  1. 触发:PowerShell 调用 SearchForAllUpdatesAsync() 即可,或使用 PoC 仓库中的 Run-InstallServiceInteractiveShell.ps1
  2. 执行:InstallService 在 SYSTEM 上下文通过 COM 加载攻击者指定的 DLL,canary DLL 直接在当前桌面会话中弹出 SYSTEM 权限的 Shell;
  3. 痕迹保留与持久化:利用成功后即可创建特权账户、安装服务、写入计划任务、删除或禁用安全软件、读取其他用户数据,达成完全控盘。

技术亮点

  • 整个利用全程不涉及内核内存破坏,因此不会被 PatchGuard、HVCI 等内核级缓解措施拦截;
  • 复用 Windows 自带 COM 类让攻击者无需注册新 CLSID,避开了 admin-only 的注册表写入要求;
  • 利用过程对 AV / EDR 可见性较低,特别是当 SECURITY 组监控仅盯”加载未知 DLL”却忽略”已知 CLSID 被覆写路径”的场景。

影响评估

CVE-2026-50343 是一类”低调但高危”的本地提权漏洞:对单台主机的影响评分 7.8,看似一般,但因为:① 不需要任何用户交互,② 不需要 admin / UAC,③ 公开 PoC 已就绪,④ 可以与 RDP 暴力破解、钓鱼初始访问、浏览器 RCE 之后的沙箱逃逸等多种”初级立足点”组合形成完整的 SYSTEM 接管链路,所以真实风险显著高于基础 CVSS。建议组织将其与”任何允许多用户登录”的主机(终端、跳板机、CI Worker、共享开发机)联系起来评估。

参考历史经验,公开 PoC 的 Windows 本地提权漏洞通常会在 7 至 14 天内被勒索软件团伙、MaaS 工具集(如 Cobalt Strike 后渗透插件)以及商业间谍软件集合纳入。本次 PoC 已经在多份独立技术文章中得到完整复现,其传播面比单纯的”漏洞公告”宽得多,强烈建议未打补丁的系统视同已暴露。

修复建议

  • 应用 2026 年 7 月 Microsoft 补丁星期二发布的 Windows 更新,立即重启主机以便 InstallService 重新加载修补后的 DLL;
  • 在补丁落地前,使用以下检测与缓解措施:
# 监控注册表写入
Sysmon Event ID 13 包含 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\InstallService\State\PlugInList
或 ...\StaticPluginMap 的写入动作

# 监控 InstallService 进程外的 DLL 加载
Get-WinEvent -LogName Microsoft-Windows-Kernel-General | Where-Object {
  $_.Message -like '*svchost.exe*' -and $_.Message -like '*CrossDevice.Streaming.Source.dll*'
}

# 临时限制多用户交互登录(仅在确认补丁尚未应用时)
Disable-LocalUser -Name "Guest"
$users = Get-LocalUser | Where-Object { $_.Enabled -eq $true -and $_.Name -ne 'Administrator' }
# 视情况回收不必要的本地交互账户
  • 在生产环境中启用 LSA 凭据隔离、LSA Protection(RunAsPPL),并强制 PPL 策略覆盖 InstallService 宿主进程,降低 DLL 注入成功后的横向扩散能力;
  • 对共享终端、跳板机、CI Worker 重新审视”标准用户能不能交互登录”——这是该漏洞最直接的利用放大器;
  • 长期防御:把 Sysmon Rule ID 1(Process Create)扩展为”任何由 svchost.exe 派生 cmd.exe / powershell.exe“告警;启用 Attack Surface Reduction 规则阻断可疑的 WinRT API 调用组合;
  • 在 Microsoft Defender for Endpoint 环境中验证 Trojan:LPE/CVE-2026-50343 相关遥测是否命中(Defender 已给出对应检测签名);
  • 对所有可能”曾经被多用户登录”的主机,安排一次系统镜像重建并轮换所在域账户的凭据。

参考来源