1 puan yazan GN⁺ 2024-09-08 | 1 yorum | WhatsApp'ta paylaş
  • 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.dll içinde doğruladıktan sonra SPLicenseBlock’u clipsp.sys’e geçirip çekirdekte yeniden kontrol eden bir güven zinciri kullanır
  • clipup.exe iç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çirir
    • clipsvc.dll: Uygulama lisanslarını yöneten kullanıcı modu servisi
    • clipc.dll: Uygulamaların CLiP ile etkileşime girdiği API
    • clipwinrt.dll: Windows Runtime kullanan UWP uygulamaları için API
    • clipsp.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.dat içine kaydedilir
  • Ardından SPLicenseBlock etiketinden imzalı lisans bloğu çıkarılıp clipsp.sys’e iletilir; doğrulamadan geçtikten sonra CLiP lisans deposu olan HKLM\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.exe iç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.sys sembolleri 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 0xC9 türü License Information’ı, 0xA uzunluğu ise 10 bayt veriyi ifade eder
  • Lisans bloğunun sonunda her zaman 0xCC tü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/content adresinden 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\Migration konumuna kopyalanması, ClipSvc’nin yeniden başlatılması veya clipup -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

 
GN⁺ 2024-09-08
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ı?

    • Evet. Yazıda en çok gözden kaçan kısım gibi, ama belki de en ilginç kısmı da bu.
      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.
    • Tamamen konu dışı ama dipnot işareti olarak yen/yuan sembolü kullanılması çok ilginç. Kaçırdığım bir geçmişi mi var, yoksa rastgele mi kullanılmış merak ettim.
  • 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ı.

    • Bu exploit’e gerek yok. MS codec paketine ihtiyaç duymayan bir medya oynatıcı kullanabilirsiniz; ama bu bir seçenek değilse:
      1. https://store.rg-adguard.net adresine gidin
      2. https://apps.microsoft.com/detail/9n4wgh0z6vhq bağlantısını yapıştırın
      3. ring’i "Retail" olarak değiştirin
      4. "appxbundle" uzantılı dosyayı indirin
      5. Kurun. Bu adımda geliştirici modunu açmanız gerekebilir; tam hatırlamıyorum.
    • Resmî Microsoft imzalı HEVC kurulum dosyasının indirme bağlantısı massgrave.dev[0] üzerinde de bulunabilir. Gerçekten harika bir kaynak.
      0: https://massgrave.dev/unsupported_products_activation#hevc-v...
    • Para ödemeye gerek yok. Sadece doğrudan bağlantı yeterli.
      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
    • Buna neden gerek olsun ki? HEVC codec’i GPU üreticisinin sürücü paketiyle birlikte geliyor.
  • Bu tür şeyler onlarca yıl boyunca Windows dağıtımı ve iletişim kanalları için en etkili yöntem oldu.

    • Diğer yazılımların çoğu için geçerli değil.
  • İ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.

    • XML > TLV > null ile sonlanan string / kullanıcı girdisi için UTF-16 gibi ekosistemlerde, herhangi bir yerde off-by-one hatası ya da doğrulanmamış kötü niyetli kullanıcı girdisi olduğunda, teknik borçtan yapılmış iskambil kâğıdı evi; yetki yükseltme, uzaktan kod yürütme ve yatay hareketten oluşan bir mayın tarlasına dönüşüp çökebilir. Tabii bu önemsiz bir iş değil.
      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

    • Hangi antivirüsler bunu yapıyor?
  • 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?

    • Buna hiç inanmadım. En kötüsü, bunu Microsoft Kool-Aid’ini içen insanlara anlatmak.
      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.
    • TPM çıktığından beri insanlar 10 yılı aşkın süredir bunu söylüyor.
      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.
    • Safça gelebilir ama hâlâ inanıyorum. Şüphecilik gerekli, fakat sadece varsayımlarla tamamen reddetmek de kendi başına hatalı bir akıl yürütme.
      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ı.

    • Nintendo Wii’nin hash doğrulamada strncmp kullanıp ilk eşleşen 00 baytında durmasından bu yana en kötü kriptografi hatası mı acaba?