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.
2. Signature-scan for the target routine. OS password / unlock kontrolünün byte pattern'ını bilinen offset'lerde physical page'lerde ara.
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)
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¶
- Maartmann-Moe. Inception (FireWire/Thunderbolt DMA tool) — https://github.com/carmaa/inception
- Attacking full-disk encryption with Inception. LWN — https://lwn.net/Articles/531920/
- Bypass full-disk encryption and passwords via FireWire. jwz — https://www.jwz.org/blog/2013/01/bypass-full-disk-encryption-and-passwords-on-any-powered-on-computer-via-firewire/