Keyhole – eigene Windows-Store-Lizenzen erzeugen
(massgrave.dev)- Keyhole ist ein DRM-Bypass-Bug, der den Lizenzprüfungsablauf von CLiP umging und es ermöglichte, Lizenzen für Microsoft-Store-Apps und aktuelle Windows-Editionen zu erstellen
- CLiP verwendet eine Vertrauenskette, bei der signierte XML-Lizenzen in
clipsvc.dllgeprüft werden und anschließend einSPLicenseBlockanclipsp.sysübergeben wird, wo im Kernel eine erneute Prüfung erfolgt - In
clipup.exewar ein ECDSA-Schlüssel zum Signieren von XML-Lizenzen ohne Obfuskation enthalten, sodass ClipSvc beliebig signierte XML-Lizenzen akzeptieren konnte - Die eigentliche Schwachstelle bestand darin, dass Daten hinter dem Signaturblock im Lizenzblock nicht geprüft wurden, aber frühere Blöcke desselben Typs überschreiben konnten; für device-locked Windows-Lizenzen war eine device-locked App-Lizenz erforderlich
- Cisco TALOS meldete denselben Bug am 8. April 2024 an Microsoft; nach der Behebung beendet der Parser die Verarbeitung sofort beim Signaturblock und verarbeitet keine nachfolgenden Blöcke mehr
Charakter von Keyhole und Hintergrund der Veröffentlichung
- Keyhole ist ein Bug, der bei Arbeiten zur Umgehung der Windows-Lizenzprüfung entdeckt wurde und als DRM-Bypass das Lizenzieren von Microsoft-Store-Apps oder aktuellen Windows-Editionen ermöglichte
- Einige Bugs blieben unveröffentlicht, um sie für künftige Aktivierungsmethoden oder Testwerkzeuge aufzubewahren; nachdem CVE-2024-38184 über Cisco TALOS öffentlich wurde, wurden auch die Details zu Keyhole veröffentlicht
- Dieser Bug wurde unabhängig entdeckt, etwa zur gleichen Zeit, zu der er an Microsoft gemeldet wurde
Struktur der Lizenzverarbeitung in CLiP
- CLiP (Client Licensing Platform) ist ein mit Windows 10 eingeführtes System, das hauptsächlich DRM für Microsoft-Store-Apps implementiert und auch in die Windows-Aktivierung integriert ist
- Die wichtigsten Komponenten in Windows sind:
clipup.exe: Migriert Windows-8-Store-Lizenzen, Genuine Tickets und Produktschlüssel zu digitalen Lizenzenclipsvc.dll: Ein User-Mode-Dienst zur Verwaltung von App-Lizenzenclipc.dll: Eine API, über die Anwendungen mit CLiP interagierenclipwinrt.dll: Eine API für UWP-Anwendungen, die die Windows Runtime nutzenclipsp.sys: Ein Kernel-Mode-Treiber zur Prüfung von Lizenzen
- Wenn eine CLiP-lizenzierte App installiert wird, wird eine signierte XML-Lizenz an
clipsvc.dllübergeben; nach Prüfung der XML-Signatur werden die Daten in%PROGRAMDATA%\Microsoft\Windows\ClipSVC\tokens.datgespeichert - Anschließend wird aus dem Tag
SPLicenseBlockder signierte Lizenzblock extrahiert und anclipsp.sysübergeben; nach der Prüfung wird er im CLiP-LizenzspeicherHKLM\SYSTEM\CurrentControlSet\Control\{7746D80F-97E0-4E26-9543-26B41FC22F79}abgelegt - Dieser Speicher ist standardmäßig vor Anzeige geschützt, kann aber durch Ändern der Berechtigungen zugänglich gemacht werden
Der in clipup.exe verbliebene Signaturschlüssel
- In
clipup.exewar ein gültiger ECDSA-Schlüssel gespeichert, der zum Signieren von XML-Lizenzen verwendet werden konnte, und zwar ohne Obfuskation - Dieser Schlüssel wird ursprünglich genutzt, um temporäre Lizenzen an den Microsoft Store zu senden und digitale Lizenzen zu erhalten; ClipSvc akzeptierte denselben Schlüssel jedoch auch für App-Lizenzen
- Dadurch konnten beliebige XML-Lizenzen signiert oder erneut signiert werden, sodass die User-Mode-Prüfung von ClipSvc umgangen und gewünschte Lizenzblöcke direkt an
clipsp.sysübergeben werden konnten - Auf dieser Stufe war die Vertrauenskette auf User-Mode-Ebene außer Kraft gesetzt; die verbleibende Frage war, ob sich ClipSp täuschen ließ
Analyse von ClipSp und Entschleierung von Warbird
- Große Teile des ClipSp-Codes waren durch Warbird, Microsofts proprietäres Obfuskationswerkzeug, verborgen
- ClipSp umschließt Aufrufe obfuskierten Codes mit Entschlüsselungs- und Verschlüsselungsfunktionen, ähnlich wie Warbird in User-Mode-Programmen arbeitet
- Die auf Microsoft-Servern vorhandenen Symbole für
clipsp.syshalfen bei der Analyse; anhand der Methode von KiFilterFiberContext konnten die Entschlüsselungsfunktionen manuell ausgeführt und der verborgene Code eingesehen werden - Informationen zur User-Mode-Funktionsweise von Warbird finden sich in warbird-docs
Lizenzblock-Format und der Keyhole-Bug
- Die wichtigen Lizenzinformationen in CLiP befinden sich in Lizenzblöcken; das Format ist in CikExtractor dokumentiert
- Lizenzblöcke verwenden das TLV-Format (Tag-Length-Value)
- Jeder Unterblock enthält einen Datentyp, eine Datenlänge und die eigentlichen Daten
- Beispielsweise bedeutet Typ
0xC9License Information, Länge0xAsteht für 10 Byte Daten
- Am Ende eines Lizenzblocks steht immer ein Signaturblock vom Typ
0xCC, der die Signatur aller vorangehenden Daten und Informationen zum für die Signatur verwendeten Schlüssel enthält - Experimente zeigten, dass hinter dem Signaturblock angehängte Daten nicht geprüft wurden und dass bei mehreren Blöcken desselben Typs der letzte Block die vorherigen überschreibt
- Daher ließen sich vorhandene Lizenzinformationen ändern, indem hinter dem Signaturblock neue Lizenzdaten angehängt wurden; diese Methode erhielt den Namen Keyhole
Möglicher Umfang und Einschränkungen
- Diese Methode ermöglichte es, Lizenzen für im Microsoft Store verkaufte Inhalte aus anderen Microsoft-Store-Lizenzen zu erstellen
- Da auch viele kostenlose Apps Lizenzen haben, konnten zahlreiche Lizenzen für gewünschte Inhalte erzeugt werden
- Device-locked Lizenzen ließen sich jedoch nicht aus device-unlocked Lizenzen erstellen
- Digitale Windows-Lizenzen sind device-locked; um eine Windows-Lizenz zu erstellen, war daher eine device-locked App-Lizenz wie etwa Roblox erforderlich
- Damit wurden auch zuvor unmögliche Vorgänge möglich, etwa Enterprise LTSC per digitaler Lizenz zu aktivieren oder mit einem Generic Key einen echten KMS-Server zu aktivieren
Öffentlich dokumentierter Reproduktionsablauf und Behebung
- Der Ablauf zum Erstellen einer Windows-Lizenz besteht aus der Installation einer device-locked App, dem Abfangen der von
https://licensing.mp.microsoft.com/v7.0/licenses/contentkommenden Lizenz, dem Dekodieren der Lizenz und Extrahieren der Blöcke, dem Hinzufügen neuer Daten, dem Verpacken und Signieren als XML, dem Kopieren nachC:\ProgramData\Microsoft\Windows\ClipSVC\Install\Migrationsowie dem Neustarten von ClipSvc oder dem Ausführen vonclipup -p - TALOS-2024-1964 von Cisco TALOS meldete denselben Bug am 8. April 2024 an Microsoft
- Dieser Bug mag wie ein simples DRM-Problem wirken, doch Keyhole konnte als Einstiegspunkt für einen schwerwiegenderen Bug in ClipSp dienen und wurde deshalb in den Veröffentlichungsumfang von TALOS aufgenommen
- Der korrigierte Lizenzblock-Parser beendet die Verarbeitung sofort beim Signaturblock und verarbeitet keine Blöcke nach der Signatur mehr; diese Änderung blockiert Keyhole
Veröffentlichte Materialien und Zusammenhang mit der Xbox One
- Nach der Veröffentlichung von Keyhole wurden Code zur Erzeugung von Keyhole-Lizenzen sowie eine Sammlung von CLiP-Binaries mit Symbolen zur Unterstützung der Analyse veröffentlicht
- Große Teile des ClipSp-Codes stammen offenbar aus dem DRM-System der Xbox One
- Die Xbox One besitzt einen auf dem TPM moderner PCs basierenden SP, also einen Secure-Processor-Chip; seine Hauptaufgaben sind das Erzwingen von Codesignaturen und die Lizenzprüfung
- Das XML-Lizenzformat von CLiP und der Großteil der TLV-basierten Lizenzblöcke wurden aus dem DRM-System der Xbox One übernommen
- Auch im Xbox-SP gibt es einen Parsing-Bug wie in ClipSp; da Datenblöcke und signaturbezogene Blöcke dort jedoch getrennt geparst werden, funktioniert Keyhole auf der Xbox nicht
1 Kommentare
Hacker-News-Kommentare
Heißt das also, dass man, sobald man nur noch die Details herausfindet, Xbox-Spiele direkt kostenlos aus dem Microsoft Store herunterladen kann?
Heißt das, dass die Xbox aktuell so vollständig gehackt ist wie eine PS Vita?
Für Leute mit aktivierten automatischen Updates auf der Xbox gilt das leider nicht. Die neueste Systemsoftware scheint eine höhere Kernel-Version zu enthalten, als der collateral-damage-Exploit unterstützt.
Es wäre schön, wenn man damit auch eine Lizenz für die Lego Boost for Windows 10 App bekommen könnte, die bis 2020 im Windows Store war.
So wie ich es verstehe, kann man sie mit einer Lizenz noch herunterladen, aber neuen Nutzern wird sie nicht mehr angeboten.
Wenn ich das richtig gelesen habe, kann Microsoft den Geltungsbereich des temporären Lizenz-Signaturschlüssels einschränken, daher ist das Zeitfenster zur Erstellung permanenter Lizenzen möglicherweise nicht besonders groß.
Kann man damit die HEVC-Erweiterung ohne Microsoft-Konto aktivieren? Es ist so frustrierend, dass man die Patente nicht pauschal lizenzieren kann.
0: https://massgrave.dev/unsupported_products_activation#hevc-v...
ms-windows-store://pdp?productId=9N4WGH0Z6VHQ
ms-windows-store://pdp?productId=9PMMSR1CGPWG
ms-windows-store://pdp?productid=9MVZQVXJBQ9V
ms-windows-store://pdp?productid=9N4D0MSMP0PT
ms-windows-store://pdp?productid=9N95Q1ZZPMH4
Solche Dinge sind seit Jahrzehnten die wirksamsten Vertriebs- und Kommunikationskanäle für Windows.
Ironischerweise würde ich das wahrscheinlich tatsächlich ernsthaft nutzen, um Guitar-Hero-Spiele mit physischen Datenträgern auf originaler Hardware zu spielen. Das Spiel ist installiert, aber ohne eine Disc im kaputten DVD-Laufwerk habe ich keine „Lizenz“, um es zu starten.
Die größere Ironie ist, dass die öffentlichen Schlüssel der Konsole möglicherweise auf einer Sperrliste stehen, sodass ich meine Spielstände selbst dann nicht lesen kann, wenn das funktioniert. Das lässt sich umgehen, indem man CON-Dateien erneut mit dem Standardwert 0 signiert.
Vielleicht kommt bald noch eine dritte Ironie dazu. Das alles kommt mir sehr bekannt vor. Wirklich großartig.
Dieser Bug ist im Wesentlichen eher eine rückwirkende Pivot-Plattform für den Tag, an dem unbereinigte Eingaben und Context Escape zufällig zusammenkommen.
Oberflächlich sieht das nur wie ein simples Austauschen digitaler Sticker aus, aber weil Microsoft seinen Erfolg zu stark hebelte und wegen Abwärtskompatibilität sowie eigener Technical Debt breaking changes verweigert hat, können manche Fehler trotz ihrer Kleinheit große Auswirkungen haben und dauerhaft bestehen bleiben.
Falls ein Virenscanner die Seite blockiert, kann man hier nachsehen: https://archive.is/90XGW
Gab es Clip nicht schon vor der Xbox One?
Wenn man den Artikel liest, vor allem die Stelle, dass diese Engine aus der Xbox-DRM-Engine kopiert und eingefügt wurde, glaubt dann wirklich noch jemand, dass Pluton für die Sicherheit der Endnutzer da ist, wo es doch ebenso von der Xbox übernommen wurde? Geht es Microsoft am Ende nicht einfach darum, auf dem PC durchsetzbares DRM zu haben?
Zur Erinnerung: Pluton steckt inzwischen auch in neueren Intel-Laptop-Chips und war bei AMD schon länger dabei. Wie lange dauert es wohl noch, bis Windows das voraussetzt?
Ich bin Microsoft-Admin, daher mögen die Leute im Unternehmen maximal abgeschottete Setups wie Win11, Intune und Ähnliches. Für mich ist das Wesen von Windows aber nicht das, sondern gute Verwaltungswerkzeuge und Abwärtskompatibilität.
Pluton wird einfach ein weiteres TPM. Man führt es ein, wartet fünf Jahre und macht es dann zur Pflicht. Microsoft hat Zeit.
Trotzdem kann man auf PCs, die mit Windows verkauft wurden, immer noch Linux installieren, unter Windows weiterhin Drittanbieter-Software installieren, die nicht aus dem Store stammt, und auch raubkopierte Filme aus Torrents ansehen.
Wenn es einen nicht stört, dass man das Desktop-Hintergrundbild nicht ändern kann, kann man sogar ein nicht registriertes oder unbezahltes Windows laufen lassen.
Kann Microsoft potenziell davon profitieren? Natürlich. Aber das widerlegt weder eine echte Motivation zur Benutzersicherheit noch die Vorteile, die am Ende den Nutzern zugutekommen.
„Die Daten hinter dem Signaturblock werden überhaupt nicht geprüft und können sogar davor liegende Daten überschreiben. Wenn Blöcke desselben Typs zusammen gespeichert werden, überschreibt der letzte Block alle vorherigen. Wenn man also die Lizenzdaten ändern will, muss man nur einen solchen Block erzeugen und hinter den Signaturblock setzen.“
Wirklich erstaunlich.