Keyhole – Kendi Windows Store Lisansınızı Oluşturma
(massgrave.dev)- Keyhole, CLiP’in lisans doğrulama akışını atlayarak Microsoft Store uygulamaları ve güncel Windows sürümleri için lisans oluşturmayı mümkün kılan bir DRM atlatma hatasıydı
- CLiP, imzalı XML lisansını
clipsvc.dlliçinde doğruladıktan sonraSPLicenseBlock’uclipsp.sys’e geçirip çekirdekte yeniden kontrol eden bir güven zinciri kullanır clipup.exeiçinde XML lisansı imzalamak için kullanılan ECDSA anahtarı karartma olmadan yer aldığından, rastgele imzalanmış XML lisansları ClipSvc tarafından kabul edilebiliyordu- Asıl açık, lisans bloğunda imza bloğundan sonraki verilerin doğrulanmamasına rağmen aynı türdeki önceki blokların üzerine yazabilmesiydi; device-locked Windows lisansları için device-locked uygulama lisansı gerekiyordu
- Cisco TALOS aynı hatayı 8 Nisan 2024’te Microsoft’a bildirdi; düzeltmeden sonra ayrıştırıcı imza bloğuyla karşılaşınca hemen sonlanıyor ve ardından gelen blokları işlemiyor
Keyhole’un niteliği ve kamuya açıklanma arka planı
- Keyhole, Windows lisans denetimini atlatma çalışmaları sırasında bulunan bir hataydı; Microsoft Store uygulamalarına veya güncel Windows sürümlerine lisans atamayı mümkün kılan bir DRM atlatma yöntemiydi
- Bazı hatalar, gelecekte etkinleştirme yöntemi ya da test aracı olarak saklanmak üzere gizli tutuldu; ancak CVE-2024-38184 Cisco TALOS üzerinden kamuya açıklanınca Keyhole’un ayrıntıları da açıklandı
- Bu hata, Microsoft’a bildirildiği döneme yakın bir zamanda bağımsız olarak keşfedildi
CLiP’in lisans işleme yapısı
- CLiP (Client Licensing Platform), Windows 10’da tanıtılan bir sistemdir; ağırlıklı olarak Microsoft Store uygulama DRM’ini uygular ve Windows etkinleştirmesiyle de entegredir
- Windows içindeki başlıca bileşenler şunlardır
clipup.exe: Windows 8 Store lisanslarını, orijinallik biletlerini ve ürün anahtarlarını dijital lisansa geçirirclipsvc.dll: Uygulama lisanslarını yöneten kullanıcı modu servisiclipc.dll: Uygulamaların CLiP ile etkileşime girdiği APIclipwinrt.dll: Windows Runtime kullanan UWP uygulamaları için APIclipsp.sys: Lisansları doğrulayan çekirdek modu sürücüsü
- CLiP lisanslı bir uygulama yüklendiğinde imzalı XML lisansı
clipsvc.dll’e iletilir; XML imzası doğrulandıktan sonra veriler%PROGRAMDATA%\Microsoft\Windows\ClipSVC\tokens.datiçine kaydedilir - Ardından
SPLicenseBlocketiketinden imzalı lisans bloğu çıkarılıpclipsp.sys’e iletilir; doğrulamadan geçtikten sonra CLiP lisans deposu olanHKLM\SYSTEM\CurrentControlSet\Control\{7746D80F-97E0-4E26-9543-26B41FC22F79}konumuna kaydedilir - Bu depo varsayılan olarak görünmeyecek şekilde korunur, ancak izinler değiştirilirse erişilebilir
clipup.exe içinde kalmış imza anahtarı
clipup.exeiçinde XML lisanslarını imzalamak için kullanılabilen geçerli bir ECDSA anahtarı karartma olmadan saklanmıştı- Bu anahtar aslında Microsoft Store’a geçici lisans gönderip dijital lisans almak için kullanılır; ancak ClipSvc uygulama lisansları için de aynı anahtarı kabul ediyordu
- Bunun sonucunda rastgele XML lisansları imzalanabiliyor veya yeniden imzalanabiliyor, ClipSvc’nin kullanıcı modu denetimleri atlanarak istenen lisans bloğu doğrudan
clipsp.sys’e geçirilebiliyordu - Bu aşamada kullanıcı modu düzeyindeki güven zinciri etkisiz hâle geliyor, geriye ClipSp’yi kandırmanın mümkün olup olmadığı sorusu kalıyordu
ClipSp analizi ve Warbird karartmasının kaldırılması
- ClipSp kodunun büyük bölümü Microsoft’un kendine ait karartma aracı Warbird ile gizlenmişti
- ClipSp, karartılmış kod çağrılarını şifre çözme ve şifreleme işlevleriyle sarar; bu, Warbird’ün kullanıcı modu programlarında çalışma biçimine benzer
- Microsoft sunucularındaki
clipsp.syssembolleri analize yardımcı oldu ve KiFilterFiberContext’in yöntemi temel alınarak şifre çözme işlevi elle çalıştırılıp gizli kod görülebildi - Warbird’ün kullanıcı modundaki davranışı için warbird-docs referans alınabilir
Lisans bloğu biçimi ve Keyhole hatası
- CLiP’teki önemli lisans bilgileri lisans bloğu içinde yer alır; biçimi CikExtractor içinde belgelenmiştir
- Lisans bloğu TLV (tag-length-value) biçimini kullanır
- Her alt blok veri türü, veri uzunluğu ve asıl veriyi içerir
- Örneğin
0xC9türü License Information’ı,0xAuzunluğu ise 10 bayt veriyi ifade eder
- Lisans bloğunun sonunda her zaman
0xCCtüründe bir imza bloğu bulunur; bu blok, önceki tüm verilerin imzasını ve imzada kullanılan anahtar bilgilerini içerir - Deneyler, imza bloğunun arkasına eklenen verilerin doğrulanmadığını ve aynı türde birden fazla blok varsa son bloğun önceki bloğun üzerine yazdığını gösterdi
- Bu nedenle imza bloğunun arkasına yeni lisans verileri eklenerek mevcut lisans bilgileri değiştirilebiliyordu; bu yönteme Keyhole adı verildi
Olası kapsam ve kısıtlar
- Bu yöntem, Microsoft Store’da satılan öğelerin lisanslarının başka bir Microsoft Store lisansından oluşturulabilmesini sağlıyordu
- Ücretsiz uygulamalarda da çok sayıda lisans bulunduğundan, istenen öğe için çok sayıda lisans oluşturmak mümkün hâle gelmişti
- Ancak device-locked lisanslar, device-unlocked lisanslardan oluşturulamıyordu
- Windows dijital lisansları device-locked olduğu için Windows lisansı oluşturmak amacıyla Roblox gibi device-locked bir uygulama lisansı gerekiyordu
- Bu sayede Enterprise LTSC’yi dijital lisansla etkinleştirmek veya generic key ile normal KMS sunucusunu etkinleştirmek gibi daha önce mümkün olmayan işlemler de mümkün oluyordu
Kamuya açık yeniden üretim akışı ve düzeltme yöntemi
- Windows lisansı oluşturma akışı; device-locked uygulamanın kurulması,
https://licensing.mp.microsoft.com/v7.0/licenses/contentadresinden gelen lisansın yakalanması, lisansın kodunun çözülmesi ve bloğun çıkarılması, yeni verilerin eklenmesi, XML olarak paketlenip imzalanması,C:\ProgramData\Microsoft\Windows\ClipSVC\Install\Migrationkonumuna kopyalanması, ClipSvc’nin yeniden başlatılması veyaclipup -pçalıştırılması adımlarından oluşur - Cisco TALOS’un TALOS-2024-1964 raporu aynı hatayı 8 Nisan 2024’te Microsoft’a bildirdi
- Bu hata basit bir DRM sorunu gibi görünebilir; ancak Keyhole, ClipSp’deki daha ciddi bir hataya giriş noktası olabildiği için TALOS’un açıklama kapsamına dahil edildi
- Düzeltilen lisans bloğu ayrıştırıcısı imza bloğuyla karşılaşınca hemen sonlanıyor ve imzadan sonraki blokları işlemiyor; bu değişiklik Keyhole’u engelledi
Kamuya açık materyaller ve Xbox One ile ilişkisi
- Keyhole’un açıklanmasının ardından Keyhole lisans oluşturma kodu ve analize yardımcı olmak için semboller içeren CLiP ikili dosya koleksiyonu yayımlandı
- ClipSp kodunun önemli bir bölümünün Xbox One DRM sisteminden kopyalandığı anlaşılıyor
- Xbox One’da modern PC’lerdeki TPM’ye dayalı SP, yani secure processor çipi bulunur; başlıca görevi kod imzalamayı zorunlu kılmak ve lisans doğrulamaktır
- CLiP’in XML lisans biçimi ve TLV tabanlı lisans bloklarının büyük kısmı Xbox One DRM sisteminden alınmış biçimdedir
- Xbox SP’de de ClipSp ile aynı ayrıştırma hatası vardır; ancak veri blokları ile imzayla ilgili blokları ayrı ayrı ayrıştırdığı için Keyhole Xbox’ta çalışmaz
1 yorum
Hacker News yorumları
Yani artık ayrıntıları çözersek Microsoft Store’dan Xbox oyunlarını ücretsiz olarak doğrudan indirebileceğimiz anlamına mı geliyor?
Başka bir deyişle Xbox şu an itibarıyla PS Vita kadar tamamen hack’lenmiş durumda mı?
Yalnız Xbox’ta otomatik güncellemeleri açık tutanlar için ne yazık ki geçerli değil. En yeni sistem yazılımı, collateral-damage exploit’inin desteklediğinden daha yüksek bir kernel sürümü içeriyor gibi görünüyor.
Windows Store’da 2020’ye kadar bulunan Lego Boost for Windows 10 uygulamasını kurmaya yarayan bir lisans da alınabilse güzel olurdu.
Anladığım kadarıyla lisansınız varsa hâlâ indirebiliyorsunuz, ama yeni kullanıcılara artık sunulmuyor.
Doğru okuduysam Microsoft geçici lisans imzalama anahtarının kapsamını daraltabilir; bu yüzden kalıcı lisans oluşturulabilecek süre muhtemelen uzun olmayacak.
Bununla Microsoft hesabı olmadan HEVC uzantısını etkinleştirebilir miyiz? Patentleri toplu lisansla çözememeleri gerçekten çok can sıkıcı.
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
Bu tür şeyler onlarca yıl boyunca Windows dağıtımı ve iletişim kanalları için en etkili yöntem oldu.
İronik biçimde, bunu gerçekten fiziksel diski olan Guitar Hero oyununu orijinal donanımda oynamak için ciddi ciddi kullanacak gibiyim. Oyun kurulu, ama bozuk DVD sürücüye disk takılı değilse oynama “lisansım” yok.
Daha büyük ironi şu: Bu çalışsa bile konsolun açık anahtarı iptal listesine alındığı için oyun kayıt dosyalarımı okuyamayabilir. CON dosyasını varsayılan 0 ile yeniden imzalayarak bunu aşmak mümkün.
Üçüncü ironi de yakında çıkabilir. Bütün bunlar gerçekten çok tanıdık görünüyor. Son derece etkileyici.
Bu bug özünde, temizlenmemiş girdinin ve bağlamdan kaçışın tesadüfen birleşeceği gün için hazırlanmış geriye dönük bir pivot platformuna daha yakın.
Dışarıdan basit bir dijital etiket değiştirme gibi görünüyor; ancak Microsoft’un başarıyı aşırı kaldıraç olarak kullanması, geriye dönük uyumluluk ve kendi teknik borcu yüzünden kırıcı değişiklikleri reddetmesi nedeniyle bazı hatalar küçük olsa bile büyük ve kalıcı etki yaratıyor.
Antivirüs sayfayı engelliyorsa buradan bakabilirsiniz: https://archive.is/90XGW
Clip, Xbox One’dan da önce yok muydu?
Yazıyı okuyunca, özellikle de bu motorun Xbox DRM motorundan kopyala-yapıştır yapıldığı kısmını görünce, Pluton’un da Xbox’tan kopyalanmış olduğu düşünülürse hâlâ bunun son kullanıcı güvenliği için olduğuna inanan var mı? Sonuçta Microsoft’un PC’de zorlayabileceği bir DRM’e sahip olması için değil mi?
Bu arada Pluton en yeni Intel dizüstü çiplerine de girdi; AMD tarafında ise bir süredir vardı. Windows’un bunu şart koşması ne kadar sürer?
Microsoft yöneticisi olduğum için şirkettekiler Win11, Intune gibi maksimum kilitleme sağlayan yapılandırmaları seviyor. Benim için Windows’un özü bu değil; iyi yönetim araçları ve geriye dönük uyumluluk.
Pluton da başka bir TPM olacak. Önce devreye alıp 5 yıl bekleyecekler, sonra zorunlu kılacaklar. Microsoft’un zamanı var.
Yine de Windows yüklü satılan PC’lere hâlâ Linux kurabiliyorsunuz, Store dışından alınmış üçüncü taraf yazılımları Windows’a yükleyebiliyorsunuz ve torrent’ten indirilmiş korsan filmleri izleyebiliyorsunuz.
Masaüstü görselini değiştirememek sizin için sorun değilse kayıt edilmemiş ya da parası ödenmemiş Windows’u da çalıştırabiliyorsunuz.
Microsoft bundan potansiyel olarak fayda sağlayabilir mi? Elbette. Ama bu, gerçek kullanıcı güvenliği motivasyonunu ve son kullanıcıya dönen faydaları geçersiz kılmaz.
“İmza bloğundan sonraki veriler hiç kontrol edilmiyor, hatta daha önce gelen verilerin üzerine yazabiliyor. Aynı türden bloklar birlikte saklandığında son blok önceki tüm blokların üzerine yazıyor. Bu yüzden lisans verisini değiştirmek istiyorsanız o bloğu oluşturup imza bloğunun arkasına koymanız yeterli.”
Gerçekten şaşırtıcı.