Skip to content

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:

  1. 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.

  2. 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>
  1. 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.

  2. 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 bir mcupdate.dll'i load etmek için hvloader kullanı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.

References