Baton Drop: Windows boot manager rollback (CVE-2022-21894)¶
Eski ama hâlâ trusted bir Windows boot manager'a rollback yapan ve serialized Secure Boot policy'sini enforce edilmeden önce BCD memory-truncation seçenekleriyle memory'den kaldıran bir Secure Boot bypass'ı.
Mechanism¶
Note
Secure Boot'un invariant'ı, her boot application'ın çalışmadan önce bir serialized Secure Boot policy'sine karşı measure edilmesidir. Baton Drop (CVE-2022-21894) bu invariant'ı bir time-of-application bug ile kırar: serialized Secure Boot Policy, bir boot application load edildiğinde allocate edilir — Boot Configuration Data (BCD)'den gelen configuration uygulanmadan önce. O memory'yi kaldıran veya taşıyan BCD seçenekleri sağlayarak, bir saldırgan policy'yi erişilebilir memory map'ten yok edebilir; böylece firmware hâlâ enabled raporlasa da sonraki integrity check'ler Secure Boot kapalıymış gibi çalışır.
Önemli nokta şu ki bug, geçerli şekilde Microsoft-signed Windows 8.x
döneminin boot manager'larındadır. Secure Boot bir versiyona değil bir
signature'a güvendiğinden, bu binary'ler firmware Forbidden Signature
Database (DBX)'te açıkça revoke edilene kadar trusted kalır. Saldırgan basitçe
zafiyetli-ama-signed bir bootmgr/bootmgfw.efi ve crafted bir BCD'nin
kendi kopyasını getirir — bir rollback — ve firmware onu mutlulukla
load eder. Bu, BlackLotus Secure Boot bypass
bootkit'inin doğada kullandığı initial foothold'dur.
Suistimal edilen BCD boot seçenekleri:
truncatememory— belirtilen bir physical address'in üstündeki tüm memory'yi memory map'ten kaldırır. Policy allocate edildikten sonra uygulandığında serialized Secure Boot policy'sini map'ten tamamen düşürebilir.avoidlowmemory— allocation'ları belirtilen bir address'in üstüne zorlar, policy'yi öngörülebilir, truncate edilebilir bir konuma yerleştirmeye yardım eder.
Walkthrough¶
Bu walkthrough kavramsaldır ve zaten açıklanmış, patch'lenmiş public araştırmaya (Wack0'nun PoC'una) dayanır. Sahibi olmadığın sistemleri hedefleme.
Exploit zinciri, yüksek seviyede:
-
EFI System Partition'a zafiyetli, signed bir boot manager drop et — Secure Boot tarafından hâlâ trusted olan ama CVE-2022-21894 bug'ını taşıyan bir Windows 8.x dönemi
bootmgr/bootmgfw.efi. -
Serialized Secure Boot policy'sinin enforcement'tan önce kaldırılması için memory-map seçeneklerini kullanan bir BCD craft et. Kavramsal olarak:
bcdedit /store <ESP-BCD> /set {bootmgr} truncatememory 0x<addr>
bcdedit /store <ESP-BCD> /set {bootmgr} avoidlowmemory 0x<addr>
-
Policy memory'den gittiğiyle birlikte, boot manager integrity enforcement'ı disabled olarak ele alır ve Secure Boot'un normalde yasaklayacağı tehlikeli boot seçeneklerinin — örn.
nointegritychecks,testsigning,bootdebug— etki etmesine izin verir. -
Artık korunmasız olan path üzerinden unsigned/self-signed bir payload load et (public PoC'ta, entry point'i
ExitBootServices'ten önce, yani hâlâ trusted firmware boot ortamındayken çalışan self-signed birmcupdate.dll'i load etmek içinhvloaderkullanılır).
Net sonuç: Secure Boot hâlâ "enabled" raporlarken boot ortamında arbitrary code çalışır ve pre-OS persistence kurulur.
Warning
Microsoft bug'ı Ocak 2022'de patch'ledi ama zafiyetli signed binary'ler başlangıçta DBX'te revoke edilmedi, dolayısıyla tamamen patch'li bir makine basitçe eski bir signed boot manager sağlanarak istismar edilebilir kaldı. Gerçek revocation'ı sonraki güncellemeler (KB5025885, bkz. CVE-2023-24932) ele alır — rollback hedefi trusted kaldığında kodu patch'lemek yeterli değildir.
Detection¶
Göstergeler arasında EFI System Partition'da OS versiyonuyla eşleşmeyen
beklenmedik bootmgr/bootmgfw.efi kopyaları, truncatememory /
avoidlowmemory / nointegritychecks / testsigning içeren BCD store'ları ve
boot-time integrity anomalileri yer alır. Microsoft, ESP dosya analizine ve boot
configuration log incelemesine dayanan BlackLotus kampanyası için hunting
rehberi yayınladı.
Mitigation¶
Kalıcı çözüm patch değil, revocation'dur: zafiyetli boot manager'ların signature'larını firmware DBX'e ekle ki rollback hedefi artık trusted olmasın. Bu tam olarak takip eden BlackLotus Secure Boot bypass (CVE-2023-24932 / KB5025885) için sunulan çok adımlı DB/DBX update akışıdır. TPM+PIN ve HVCI ile BitLocker enable etmek post-exploitation adımlarına karşı çıtayı yükseltir.