
piccolo writeup sul bug EnterpriseModernAppManager::ProvisionApplication
Questa è solo una piccola analisi teorica, poiché su questo bug c'è stata una collisione e non ho mai avuto modo di testarlo adeguatamente.
EnterpriseAppMgmtSvc è un servizio interessante che implementa oggetti COM. Sembra risalire a Windows Phone e, in effetti, la maggior parte delle interfacce COM implementate da questa funzione è codice morto che funziona solo su Windows Phone - grazie OneCore!
L'unica coclass che sembra funzionare di default sui sistemi non-WCOS è EnterpriseModernAppManager. MS aveva originariamente un controllo dei permessi (deve essere admin) su EnterpriseModernAppManager::InstallApplication(), ma si è dimenticata di aggiungere controlli dei permessi sugli altri metodi di questa coclass.
(Naturalmente, la patch per CVE-2022-35841 aggiunge i controlli dei permessi per gli altri metodi in EnterpriseModernAppManager.)
Il metodo interessante qui è EnterpriseAppMgmtSvc::ProvisionApplication, che esegue lo staging (installazione parziale?) di pacchetti APPX a partire da una configurazione XML passata come stringa.
Un pacchetto APPX arbitrario, tramite un paio di capability ristrette, può essere configurato per installare un servizio NT in esecuzione come SYSTEM, tramite l'estensione desktop6:Service e le capability ristrette packagedServices e localSystemServices.
Questo è quanto sono riuscito a ottenere. Naturalmente non mi aspettavo una collisione e una patch oggi, quindi non l'ho mai testato nella pratica e di conseguenza non so che tipo di firma richiederebbe l'APPX.