
Tribell Edge Sandbox Escape - Edge의 레거시 취약점들(BadgeUpdateManager / TileFlyoutUpdateManager / ToastNotificationManager)의 PoC로, 경계 간 XmlDocument 공유를 악용하여 Edge의 LPAC 샌드박스를 탈출합니다 (CVE-2019-0555).
Tribell Edge Sandbox Escape - Edge의 레거시 취약점 BadgeUpdateManager / TileFlyoutUpdateManager / ToastNotificationManager를 활용하여 경계 간 XmlDocument 공유를 악용하고 Edge의 LPAC 샌드박스를 탈출하는 PoC (CVE-2019-0555)
PoC는 JIT(Just-In-Time) 컴파일 프로세스 내에서 notepad.exe의 실행을 트리거합니다.
다수의 Partial Trust 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));
...