Skip to content

Early-boot DMA attack on UEFI (pre-IOMMU window)

DMA yeteneğine sahip bir peripheral, firmware'in DMA protection'ın aktif olduğunu iddia ettiği ama IOMMU/VT-d translation'ının aslında program'lanmadığı boot penceresi sırasında RAM'e saldırır.

Mechanism

Invariant: koruma yalnızca IOMMU program'lanıp lock'landığında gerçektir, bir flag öyle dediğinde değil

DMA, bus-mastering yapan bir cihazın (PCIe, Thunderbolt/USB4) CPU katılımı olmadan host RAM'ini okuyup yazmasına izin verir. Böyle bir cihaz ile keyfi physical memory arasında duran tek şey IOMMU'dur (Intel VT-d / AMD-Vi): cihaz kaynaklı memory erişimlerini per-device page table'lara karşı çevirip kapı tutan bir donanım "memory firewall'ı".

Boot sırasının yapısal bir sıralama problemi var. Erken UEFI fazları (PEI, sonra DXE) PCIe ve diğer DMA yetenekli controller'ları ayağa kaldırır, ama IOMMU translation table'ları ayrı, daha geç bir initialization adımıdır. Bus mastering'in mümkün olup IOMMU'nun henüz enforce etmediği herhangi bir aralık bir pre-IOMMU penceresi yaratır. O pencere sırasında mastering yapan bir cihaz, düz ve korumasız physical memory görür.

Açıklanan kusur (CERT/CC VU#382314, Aralık 2025) bir timing race'ten daha kötüdür: etkilenen firmware Kernel DMA Protection'ın aktif olduğu ACPI/Windows sinyalini set'ler, böylece OS pre-boot IOMMU'nun yapılandırıldığına güvenir — oysa firmware IOMMU translation'ını hiç enable etmemiştir. CERT/CC buna bir "Sleeping Bouncer" diyor: gardiyan görev başında görünür ama değildir. Kırılan invariant "pozitif bir DMA-protection göstergesi IOMMU'nun enforce ettiği anlamına gelir"tir — burada o çıkarım geçerli değil.

Walkthrough

Saldırı, klasik external-DMA toolchain'ini yeniden kullanır (bir Thunderbolt/PCIe link üzerinden PCILeech-sınıfı donanım). VU#382314'teki yenilik tamamen şu: koruma raporlayan makinelerde bile pencere açık kalıyor. Yalnızca temsili, açıklayıcı adımlar:

  1. Firmware'in iddiasını doğrula. Victim-sınıfı bir makinede, pre-boot IOMMU hiç program'lanmamış olmasına rağmen OS DMA protection'ı enabled olarak raporlar:
# Windows: System Information (msinfo32)
Kernel DMA Protection            On
Virtualization-based security    Running

İşte tam da yanıltıcı sinyal bu: OS yüzeyi "On" der, erken firmware ise onu hiç enforce etmedi.

  1. Erken bir DMA yetenekli cihaz tak. Bus-mastering fonksiyonu sunan kötü niyetli bir PCIe endpoint'i ya da bir Thunderbolt cihazı bağlanır. Pencere sırasında IOMMU translation yapmadığından, cihazın memory request'leri doğrudan physical RAM'e vurur.

  2. Link üzerinden hazır bir direct-memory aracıyla physical memory'yi oku/tara (kavramsal olarak):

# illustrative pcileech-style probe (do not weaponize)
pcileech dump -min 0x0 -max 0x100000000 -out early_ram.bin

??? example "Pencere sırasında bunun açığa çıkardıkları" OS korumaları yüklenmeden önce RAM, boot-stage sırlarını ve yazılabilir yapıları içerir: UEFI variable/boot-script state'i, transit halindeki key material ve üzerine yazılırsa pre-boot code injection'a izin veren code page'ler. CERT/CC, bir saldırganın "host üzerindeki güvenlik ayarları enabled görünürken bile fark edilmeden kod inject edebileceğini" belirtiyor.

  1. (Modifikasyon yolu) Pencere yazmalara izin verdiğinden, bir saldırgan kontrolü kalıcı kılmak için boot-stage kodunu ya da verisini patch'leyebilir; bu kavramsal olarak uefi-software-dma-attack-against-firmware-security.md ve s3-boot-script-tampering.md içindeki firmware-stage tampering'e benzer.

Detection

  • Göstergeyi değil, enforcement'ı doğrula. OS'in "Kernel DMA Protection: On" string'ine tek başına güvenme. Etkilenen platformlarda bu, IOMMU program'lanmadan set'lenir. Firmware versiyonunu vendor advisory'sine karşı denetle (vendor başına CVE'ler aşağıda).
  • Firmware integrity / measured boot. Pencere sırasında boot-stage kodunu değiştiren bir cihaz, sonraki measurement'ları değiştirir; tampering'i yakalamak için TPM PCR'larını known-good bir baseline'a karşı karşılaştır.
  • Physical/port telemetry. Thunderbolt/USB4 ve PCIe hot-plug olaylarını logla; boot civarında beklenmedik bir bus-mastering endpoint'inin belirmesi güçlü bir göstergedir.
  • Firmware analizi. DXE driver'larının statik incelemesi, VT-d/AMD-Vi DMAR kurulumu ile protection-reporting yolunun tutarlı olup olmadığını doğrulayabilir — buradaki kök neden, korumayı enable etmeden korumayı raporlamaktı.

Mitigation

  • Firmware'i patch'le. IOMMU initialization sırasını düzelten vendor BIOS/UEFI güncellemelerini uygula (CERT/CC VU#382314): ASUS (CVE-2025-11901), GIGABYTE (CVE-2025-14302), MSI (CVE-2025-14303), ASRock (CVE-2025-14304).
  • Firmware'in sunduğu yerde tam IOMMU DMA protection'ı enable et (örn. ASUS rehberi: "IOMMU DMA Protection"ı Enable with Full Protection yap).
  • Physical erişimi kısıtla. External-DMA saldırıları physical yakınlık / bir port gerektirir; kullanılmayan Thunderbolt/PCIe slot'larını devre dışı bırak, Thunderbolt security'yi user-authorization'a ayarla ve chassis'i açmaya karşı koru.
  • OS'te defense in depth. Kernel DMA Protection artı IOMMU destekli device isolation enforce edildiğinde etkilidir; pre-boot authentication (böylece sırlar korumasız bir pencere sırasında RAM'e unseal edilmez) başarılı bir okumanın geri çıkarabileceğini daha da azaltır.

References