
Tribell Edge Sandbox Escape - Edgeのレガシー脆弱性のPoC群。BadgeUpdateManager / TileFlyoutUpdateManager / ToastNotificationManagerを悪用して、境界を越えたXmlDocument共有を攻撃し、EdgeのLPACサンドボックスから脱出する(CVE-2019-0555)。
Tribell Edge サンドボックスエスケープ - BadgeUpdateManager / TileFlyoutUpdateManager / ToastNotificationManager を使用して、クロスバウンダリの XmlDocument 共有を悪用し、Edge の LPAC サンドボックスからエスケープする Edge のレガシー脆弱性の PoC(CVE-2019-0555)。
この PoC は、Just-In-Time(JIT)コンパイルプロセス内で notepad.exe の実行をトリガーします。
多数の Partial Trust Windows Runtime クラス は、XmlDocument クラスをプロセス境界を越えてより低い特権の呼び出し元に公開しており、元の形式ではこれを悪用して 特権を昇格させ、Edge Content LPAC サンドボックスからエスケープ することができました。
この PoC は、BadgeUpdateManager、TileFlyoutUpdateManager、および ToastNotificationManager を使用して、XmlDocument のクロスバウンダリ公開を再現し、サンドボックスエスケープを達成します。この脆弱性はマイクロソフトによってパッチが適用されており、完全に更新されたシステムでは動作しなくなりました。
エクスプロイトコードの開発中に、各クラスの使用方法を調査するために、以下の 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));
...