Skip to content

UEFI software DMA attack against firmware security (Cr4sh DMA)

Tamamen yazılımla sürülen bir chipset/onboard DMA engine kullanarak (harici bir cihaz olmadan), saldırgan TSEG/SMRR lock'ları uygulanmadan önceki early-boot penceresinde SMRAM'e yazar, ardından BIOS flash write protection'ı devre dışı bırakır.

Mechanism

Invariant

SMRAM, DMA'dan TSEG ile (memory controller TSEG aralığına DMA'yı reddeder) ve cache poisoning'den SMRR ile korunur — ama yalnızca bu lock'lar uygulandığında, ki bu firmware initialization sırasında olur. Defender'ların güvendiği invariant şudur: SMRAM, herhangi bir untrusted kod çalışmadan önce DMA-protected'dır. Cr4sh'in "software DMA" çalışması, eğer TSEG/SMRR lock'lanmadan önce erken bir firmware phase'inde (PEI) kod çalıştırabilirseniz, daha sonra SMRAM olacak DRAM'e yazacak ya da diğer protected aralıkları hedefleyecek on-die bir DMA-capable engine'i, hiçbir harici donanım olmadan programlayabileceğinizi gösterir. Aynı fikir, early-boot pre-IOMMU/pre-lock penceresini (early-boot-dma-attack-on-uefi.md) genelleştirir: DMA, CPU mode'undan bağımsız gerçekleşir, dolayısıyla lock'tan önce issue edilen bir yazma, SMI handler'ın daha sonra güveneceği memory'ye düşer.

Walkthrough

Public Cr4sh disclosure'ından conceptual path ("Breaking UEFI security with software DMA attacks") — zaten disclose edilmiş, açıklayıcı:

  1. TSEG/SMRR lockdown'dan önce erken execution elde et (örn. bir PEI-phase implant ya da erken bir modüldeki bir bug).
  2. Bir entegre DMA-capable controller'ı yazılımla programla; böylece yakında SMRAM olacak bölgeyi (ya da diğer firmware buffer'larını) hedefleyen DRAM yazmaları gerçekleştir.
  3. SMI handler'ın daha sonra ring -2'de execute edeceği ya da güveneceği code/data yerleştir.
  4. SMM'den pivot yaparak BIOS_CNTL flash write protection'ı temizle (spi-flash-bios-write-protection-misconfig.md) ve bir SMM/firmware implant kur — fiziksel erişim olmadan.
# Conceptual (illustrative; do not weaponize):
# during PEI, before TSEG/SMRR lock:
program_onboard_dma(src=payload, dst=future_smram_phys, len=...)
# later SMI handler executes/trusts the planted bytes -> ring -2

Warning

Defensive/educational. Tam teknik writeup (blog.cr4.sh, 2015) kayıt kaynağıdır; herhangi bir reprodüksiyonu conceptual olarak değerlendir. Ders şu: DMA, CPU-mode kontrollerini bypass eder, yani henüz lock'lanmamış korumalar koruma değildir.

Detection

  • TSEG/SMRR DMA protection'ın erken olarak konfigüre edildiğini ve lock'landığını doğrula (CHIPSEC common.smm_dma); lock'lanmamış bir pencere exposure'dır.
  • Measured-boot / firmware integrity attestation, sonuçta oluşan bir implant'ı yakalayabilir.

Mitigation

  • TSEG'i (TSEGMB/BGSM + lock bit'leri) ve SMRR'yi mümkün olduğunca erken lock'la ve asla yeniden açma; lockdown'dan önce çalışan kodu minimize et.
  • DXE sırasında IOMMU/VT-d DMA protection'ı etkinleştir ve pre-IOMMU boşluğunu Intel BootGuard/verified boot ile köprüle; böylece hiçbir untrusted erken kod çalışmasın.

References