这只是一个包含理论的小型说明,因为这个漏洞被他人同时发现,而我从未实际进行过完整测试。
EnterpriseAppMgmtSvc 是一个实现 COM 对象的有趣服务。它似乎源自 Windows Phone,实际上,该函数实现的大多数 COM 接口都是死代码,仅在 Windows Phone 上有效——感谢 OneCore!
在非 WCOS 系统上,默认可用的唯一 coclass 是 EnterpriseModernAppManager。微软最初在 EnterpriseModernAppManager::InstallApplication() 上添加了权限检查(必须是管理员),但忘记在同一 coclass 的其他方法上添加任何权限检查。
(自然,CVE-2022-35841 的补丁为 EnterpriseModernAppManager 中的其他方法添加了权限检查。)
这里有趣的方法是 EnterpriseAppMgmtSvc::ProvisionApplication,它根据传递的 XML 字符串配置来暂存(部分安装?)APPX 包。
通过几个受限功能,可以配置一个任意的 APPX 包,利用 desktop6:Service 扩展以及 packagedServices 和 localSystemServices 受限功能,安装一个以 SYSTEM 权限运行的 NT 服务。
我就进行到这里。我自然没有预料到会与他人同时发现这个漏洞,并且今天收到了补丁,所以我从未在实践中测试过它,因此不知道 APPX 需要什么样的签名。