Skip to content

FireWire DMA attack

IEEE 1394 (FireWire) üzerinden sahte bir SBP-2 cihazı sun ki kurban DMA versin, ardından physical RAM'in alt 4 GB'ını doğrudan oku/yaz — CPU'yu bypass'layarak login'leri aç ve disk encryption'ı aş.

Mechanism

DMA, CPU'yu ve OS'i bypass'lar

FireWire (IEEE 1394) yüksek throughput'lu çevre birimleri için tasarlanmıştır ve bağlı cihazlara direct memory access verir; böylece veri CPU müdahalesi olmadan hareket eder. Dolayısıyla OHCI 1394 controller'ı bir bus cihazının host physical memory'sini okumasına ve yazmasına izin verir. Klasik FireWire controller'ları 32-bit'lik bir physical request alanı sunar, bu yüzden bir saldırgan cihaz RAM'in alt 4 GB'ına ulaşabilir. Cihazı kısıtlayan bir IOMMU olmadan bu, güvenilmeyen bir çevre biriminden kısıtlamasız host bellek erişimi demektir.

DMA'nın verilmesini sağlamak için saldırgan bir SBP-2 (Serial Bus Protocol 2) unit directory'si yayınlar. SBP-2 depolama cihazları hız için meşru olarak DMA'ya ihtiyaç duyar, bu yüzden kurban OS "cihaz" için physical DMA'yı etkinleştirir. Saldırgan ardından bellekte bilinen code/byte signature'ları (örneğin password-check rutini) tarar ve bunları patch'ler.

Bu, Thunderclap ve PCILeech gibi modern DMA saldırılarının tarihsel öncülüdür; aynı IOMMU savunmaları geçerlidir.

Walkthrough

1. Pose as an SBP-2 unit. Inception gibi bir araç kullanarak, saldıran makinenin 1394 controller'ını bir SBP-2 unit directory'si yayınlayacak şekilde yapılandır ki hedef DMA'yı etkinleştirsin.

$ inception
[*] FireWire SBP-2 unit advertised
[*] Target granted physical DMA (low 4 GB)

2. Signature-scan for the target routine. OS password / unlock kontrolünün byte pattern'ını bilinen offset'lerde physical page'lerde ara.

[*] Searching for unlock signature...
[+] Found at PA 0x...  (msv1_0 / pam / loginwindow)

3. Patch to short-circuit the check. Karşılaştırmanın üzerine yazarak herhangi bir password'ün kabul edilmesini sağla (ya da privilege yükselt), ardından login ol veya disk encryption'ı aç.

Inception unlock modülü (kavramsal)
read pages -> match signature -> write patched bytes
effect: authentication routine always returns success
works against: Windows login, BitLocker/TrueCrypt/FileVault (powered-on,
locked screen)

Açık bir hedef ve DMA-capable bir port gerektirir

Saldırı, makine açıkken ve key'ler RAM'deyken bir 1394 (veya DMA-bridge'li Thunderbolt/ExpressCard/PC Card) portuna fiziksel erişime ihtiyaç duyar. Kapalı bir makineden key'leri kurtaramaz.

Detection

  • Kilitli bir makinede beklenmedik 1394/SBP-2 cihaz enumeration'ı.
  • Remapping etkinse ve cihaz kendi map'inin dışına ulaşıyorsa IOMMU fault logları.

Mitigation

  • Çevre birimi DMA'sını sınırlamak için IOMMU / VT-d DMA remapping (kalıcı çözüm).
  • FireWire SBP-2 DMA'yı devre dışı bırak (örneğin Windows DMA-port lockdown) ya da controller driver'ını kaldır.
  • Modern platformlarda Kernel DMA Protection, pre-boot/hotplug DMA'yı kapatır.

References