Keyhole – अपना Windows Store लाइसेंस बनाना
(massgrave.dev)- Keyhole एक DRM bypass bug था जिसने CLiP के license verification flow को bypass करके Microsoft Store apps और नए Windows editions के लिए licenses बनाना संभव कर दिया था
- CLiP एक trust chain इस्तेमाल करता है, जिसमें signed XML license को
clipsvc.dllमें verify करने के बादSPLicenseBlockकोclipsp.sysको पास किया जाता है, जहां kernel में फिर से जांच होती है clipup.exeमें XML license signing के लिए ECDSA key बिना obfuscation के मौजूद थी, जिससे ClipSvc मनमाने ढंग से signed XML licenses स्वीकार कर सकता था- असली vulnerability यह थी कि license block के signature block के बाद का data verify नहीं होता था, फिर भी वह उसी type के पिछले block को overwrite कर सकता था; device-locked Windows license के लिए device-locked app license चाहिए था
- Cisco TALOS ने यही bug 8 अप्रैल 2024 को Microsoft को report किया था, और fix के बाद parser signature block मिलते ही तुरंत terminate हो जाता है और उसके बाद आने वाले blocks process नहीं करता
Keyhole की प्रकृति और disclosure की पृष्ठभूमि
- Keyhole Windows license checks को bypass करने के काम के दौरान मिला bug था, जो Microsoft Store apps या नए Windows editions को license देने की DRM bypass विधि बनाता था
- कुछ bugs को भविष्य के activation methods या testing tools के लिए private रखा गया था, लेकिन CVE-2024-38184 के Cisco TALOS के जरिए सार्वजनिक होने के बाद Keyhole की जानकारी भी सार्वजनिक की गई
- यह bug लगभग उसी समय स्वतंत्र रूप से खोजा गया था, जब इसे Microsoft को report किया गया
CLiP की license processing structure
- CLiP(Client Licensing Platform) Windows 10 में पेश किया गया system है, जो मुख्य रूप से Microsoft Store app DRM implement करता है और Windows activation के साथ भी integrated है
- Windows के भीतर मुख्य components ये हैं
clipup.exe: Windows 8 Store licenses, genuine tickets, और product keys को digital licenses में migrate करता हैclipsvc.dll: app licenses manage करने वाली user-mode serviceclipc.dll: applications को CLiP के साथ interact करने के लिए APIclipwinrt.dll: Windows Runtime इस्तेमाल करने वाली UWP applications के लिए APIclipsp.sys: licenses verify करने वाला kernel-mode driver
- CLiP-licensed app install होने पर signed XML license
clipsvc.dllको दिया जाता है, और XML signature verification के बाद data%PROGRAMDATA%\Microsoft\Windows\ClipSVC\tokens.datमें store होता है - इसके बाद
SPLicenseBlocktag से signed license block extract करकेclipsp.sysको भेजा जाता है, और verification के बाद CLiP license storeHKLM\SYSTEM\CurrentControlSet\Control\{7746D80F-97E0-4E26-9543-26B41FC22F79}में store होता है - यह store default रूप से दिखाई न दे, इस तरह protected होता है, लेकिन permissions बदलने पर access किया जा सकता है
clipup.exe में बची हुई signing key
clipup.exeमें XML licenses sign करने के लिए इस्तेमाल हो सकने वाली valid ECDSA key बिना obfuscation के stored थी- यह key मूल रूप से Microsoft Store को temporary license भेजकर digital license प्राप्त करने के लिए इस्तेमाल होती है, लेकिन ClipSvc app licenses के लिए भी वही key स्वीकार करता था
- नतीजतन, मनमाने XML licenses को sign या re-sign किया जा सकता था, और ClipSvc के user-mode checks को bypass करके इच्छित license block सीधे
clipsp.sysको भेजा जा सकता था - इस stage पर user-mode level की trust chain निष्प्रभावी हो जाती थी, और बचा हुआ सवाल यह था कि क्या ClipSp को धोखा दिया जा सकता है
ClipSp analysis और Warbird deobfuscation
- ClipSp का बहुत सा code Microsoft के proprietary obfuscation tool Warbird से छिपाया गया था
- ClipSp obfuscated code calls को decryption function और encryption function से wrap करता है, जो user-mode programs में Warbird के काम करने के तरीके जैसा है
- Microsoft servers पर मौजूद
clipsp.syssymbols analysis में मददगार रहे, और KiFilterFiberContext की method के आधार पर decryption function को manually run करके hidden code देखा जा सका - Warbird के user-mode behavior के लिए warbird-docs reference के तौर पर इस्तेमाल किया जा सकता है
License block format और Keyhole bug
- CLiP में महत्वपूर्ण license information license block में होती है, और इसका format CikExtractor में documented है
- License block TLV(tag-length-value) format इस्तेमाल करता है
- हर sub-block में data type, data length, और actual data होता है
- उदाहरण के लिए type
0xC9License Information है, और length0xAका मतलब 10 bytes data है
- License block के अंत में हमेशा type
0xCCका signature block होता है, जिसमें पिछले सभी data की signature और signing में इस्तेमाल key की जानकारी होती है - Experiments में पता चला कि signature block के बाद जोड़ा गया data verify नहीं होता था, और अगर एक ही type के कई blocks हों तो आखिरी block पहले वाले block को overwrite कर देता था
- इसलिए signature block के बाद नया license data जोड़कर मौजूदा license information बदली जा सकती थी, और इसी method को Keyhole नाम दिया गया
संभावित scope और constraints
- यह method Microsoft Store पर बिकने वाले items के licenses को दूसरे Microsoft Store license से बनाना संभव बनाता था
- Free apps में भी licenses काफी होते हैं, इसलिए इच्छित items के लिए कई licenses बनाए जा सकते थे
- लेकिन device-locked license को device-unlocked license से नहीं बनाया जा सकता था
- Windows digital license device-locked होता है, इसलिए Windows license बनाने के लिए Roblox जैसे device-locked app license की जरूरत थी
- इससे Enterprise LTSC को digital license से activate करना, या generic key से normal KMS server activate करना जैसे काम भी संभव हो गए थे, जो पहले असंभव थे
Public reproduction flow और fix का तरीका
- Windows license बनाने का flow इस तरह था: device-locked app install करना,
https://licensing.mp.microsoft.com/v7.0/licenses/contentसे आने वाले license को intercept करना, license decode करना और block extract करना, नया data जोड़ना, XML packaging और signing करना,C:\ProgramData\Microsoft\Windows\ClipSVC\Install\Migrationमें copy करना, और ClipSvc restart करना याclipup -prun करना - Cisco TALOS की TALOS-2024-1964 ने यही bug 8 अप्रैल 2024 को Microsoft को report किया था
- यह bug साधारण DRM issue जैसा दिख सकता है, लेकिन Keyhole ClipSp के ज्यादा गंभीर bug तक पहुंचने का entry point बन सकता था, इसलिए इसे TALOS disclosure scope में शामिल किया गया
- Fixed license block parser signature block मिलते ही तुरंत terminate हो जाता है और signature के बाद आने वाले blocks process नहीं करता; इस change से Keyhole block हो गया
Public materials और Xbox One से संबंध
- Keyhole disclosure के बाद Keyhole license generation code और analysis में मदद के लिए symbols सहित CLiP binaries collection public किए गए
- ClipSp के code का बड़ा हिस्सा Xbox One DRM system से copy किया गया माना जाता है
- Xbox One में modern PC के TPM पर आधारित SP, यानी secure processor chip है, जिसकी मुख्य भूमिका code signing enforcement और license verification है
- CLiP का XML license format और TLV-based license blocks का अधिकांश हिस्सा Xbox One DRM system से आया हुआ रूप है
- Xbox SP में भी ClipSp जैसा parsing bug है, लेकिन वह data blocks और signature-related blocks को अलग-अलग parse करता है, इसलिए Keyhole Xbox पर काम नहीं करता
1 टिप्पणियां
Hacker News की रायें
तो इसका मतलब है कि अब बस details पता कर लें तो Microsoft Store से Xbox games सीधे मुफ्त में डाउनलोड किए जा सकते हैं?
यानी क्या Xbox फिलहाल PS Vita जितना पूरी तरह hack हो चुका है?
हालांकि Xbox पर auto update चालू रखने वालों के लिए दुर्भाग्य से यह लागू नहीं होता। लगता है नए system software में collateral-damage exploit द्वारा supported kernel version से ऊँचा kernel version शामिल है।
अच्छा होगा अगर Windows Store में 2020 तक मौजूद Lego Boost for Windows 10 app install करने का license भी मिल सके।
मेरी समझ के मुताबिक, अगर license हो तो इसे अभी भी download किया जा सकता है, लेकिन नए users के लिए अब उपलब्ध नहीं है।
अगर मैंने ठीक पढ़ा है, तो Microsoft temporary license signing key का scope कम कर सकता है, इसलिए permanent licenses generate कर पाने की अवधि शायद लंबी नहीं होगी।
क्या इससे Microsoft account के बिना HEVC extension activate किया जा सकता है? यह बहुत झुंझलाहट भरा है कि patents को blanket license से handle नहीं किया जा सकता।
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
इस तरह की चीज़ें कई दशकों तक Windows distribution और communication channel के तौर पर सबसे प्रभावी रही हैं।
विडंबना यह है कि शायद मैं इसे सच में original hardware पर physical disc वाले Guitar Hero games खेलने के लिए गंभीरता से इस्तेमाल करूँगा। game installed है, लेकिन जब तक खराब DVD drive में disc फँसी न हो, खेलने का “license” नहीं है।
इससे भी बड़ी विडंबना यह है कि अगर यह काम भी करे, तो console की public key revocation list में होने की वजह से शायद मेरे game save files पढ़ न पाए। CON file को default 0 से दोबारा sign करके इससे बचा जा सकता है।
तीसरी विडंबना भी शायद जल्द आए। यह सब बहुत जाना-पहचाना लग रहा है। बेहद शानदार।
यह bug असल में उस दिन के लिए एक retroactive pivot platform जैसा है, जब unfiltered input और context escape संयोग से जुड़ जाते हैं।
ऊपर से यह बस digital sticker swapping जैसा दिखता है, लेकिन Microsoft ने सफलता का ज़रूरत से ज़्यादा leverage किया है, और backward compatibility तथा अपने technical debt के कारण breaking changes से इनकार किया है, इसलिए कुछ mistakes छोटी होते हुए भी बड़ा और स्थायी impact डालती हैं।
अगर antivirus page block कर रहा है, तो यहाँ देखें: https://archive.is/90XGW
क्या Clip Xbox One से भी पहले से मौजूद नहीं था?
article पढ़कर, खासकर यह हिस्सा कि यह engine Xbox DRM engine से copy-paste किया गया था, क्या अब भी कोई मानता है कि Pluton end-user security के लिए है, जबकि Pluton भी Xbox से copy होकर आया है? आखिर में क्या यह Microsoft के लिए PC पर enforceable DRM रखने का तरीका नहीं है?
संदर्भ के लिए, Pluton अब latest Intel laptop chips में भी आ गया है, और AMD में तो कुछ समय से था। Windows को इसे require करने में कितना समय लगेगा?
मैं Microsoft admin हूँ, इसलिए company के लोग Win11, Intune जैसी maximum lockdown configurations पसंद करते हैं। मेरे लिए Windows का सार यह नहीं है, बल्कि अच्छे admin tools और backward compatibility है।
Pluton भी एक और TPM बनेगा। इसे roll out करेंगे, 5 साल wait करेंगे, फिर mandatory कर देंगे। Microsoft के पास समय है।
फिर भी Windows preinstalled बिकने वाले PC पर अब भी Linux install किया जा सकता है, Store के बाहर से मिला third-party software भी Windows पर install किया जा सकता है, और torrents से download की गई pirated movies भी देखी जा सकती हैं।
अगर desktop image न बदल पाना ठीक है, तो unregistered या unpaid Windows भी चला सकते हैं।
क्या Microsoft को इससे संभावित फायदा हो सकता है? बिल्कुल। लेकिन इससे real user-security motivation और end users को मिलने वाले benefits negate नहीं होते।
“signature block के बाद वाले data की बिल्कुल जाँच नहीं होती, और वह पहले आए data को overwrite भी कर सकता है। अगर एक ही type के blocks साथ में stored हों, तो आखिरी block पिछले सभी blocks को overwrite कर देता है। इसलिए अगर license data बदलना हो, तो बस वह block बनाकर signature block के बाद डाल देना है”
सच में हैरान करने वाला।