Flip Feng Shui¶
Memory deduplication'ı (bir victim page'i attacker'ın seçtiği physical memory'ye yerleştirmek için) Rowhammer ile (içindeki seçili bir bit'i flip'lemek için) birleştiren cross-VM saldırısı — co-located bir VM'in RSA public key'i ya da
sources.listgibi verisini bozar.
Mechanism¶
Zincirlenmiş iki sessiz donanım/host davranışı
Flip Feng Shui (FFS) iki bileşene ihtiyaç duyar. Birincisi, memory deduplication (örn. KVM üzerinde KSM): attacker VM, victim VM'deki bir page ile içeriği birebir aynı olan bir page yazdığında, host bunları tek bir copy-on-write physical page'de birleştirir — artık attacker, bir victim page'ini hangi physical frame'in beslediğini kontrol eder. İkincisi, Rowhammer: attacker, bilinen bir yönde flip olan bir hücreyi öğrenmek için DRAM'i önceden template'lemiştir; deduplicate edilen page'i o hücreye yönlendirip hammer'layarak victim'in page'inde seçili tek bir bit flip'lenir.
Sonuç, victim'de herhangi bir software açığı olmadan, co-resident bir VM'in
memory'sinde kontrollü, hedefli bir bit flip'tir. Attacker hangi page'i (content
ile) ve hangi bit'i (template ile) seçtiği için bozulma hassastır — örn. attacker'ın
factor edebilmesi için bir RSA modulus'unu zayıflatmak, ya da backdoor'lu paketler
kurdurmak için bir APT sources.list/trusted-key'ini yeniden yazmak.
FFS, Rowhammer + memory templating'i cross-VM bir primitive'e genelleştirir; Drammer ise bunun yerine phys-feng-shui kullanan mobil, deduplication'sız kardeşidir.
Walkthrough¶
1. DRAM'i template'le. Attacker VM'den hammer'layarak güvenilir yönlü flip yapan bir hücre bul ve physical konumunu öğren.
2. Victim page'i flip'lenebilir hücreye deduplicate et. İçeriği hedef victim page ile eşleşen (örn. bilinen bir public-key page'i) bir page yaz. KSM bunları attacker'ın konumlandırdığı physical frame'de birleştirir.
[*] write page == victim content
[*] wait for KSM merge -> victim page now backed by templated frame
3. Hammer'la ve boz. Seçili bit'i flip'lemek için komşu row'ları hammer'la; victim'in copy-on-write page'ini kontrollü biçimde boz.
Demonstrated payloads (USENIX Security 2016)
Deduplication imkân sağlayıcıdır
Same-content memory merging olmadan, bir victim page'i attacker'ın seçtiği physical memory'ye yerleştirmenin yolu yoktur. Cross-VM dedup'ı kapatmak FFS'in placement primitive'ini ortadan kaldırır (gerçi Drammer gibi yerel varyantlar allocator reuse kullanır).
Mitigation¶
- Multi-tenant host'larda cross-tenant memory deduplication'ı (KSM) kapat.
- Flip'leri engellemek ya da düzeltmek için TRR / artırılmış refresh / ECC.
- Guard-row isolation şemaları (örn. ZebRAM) tenant row'larını ayırır.
References¶
- Razavi et al. Flip Feng Shui: Hammering a Needle in the Software Stack. USENIX Security 2016 — https://www.vusec.net/projects/flip-feng-shui/
- Flip Feng Shui: Rowhammering the VM's Isolation (Black Hat EU 2016) — https://blackhat.com/docs/eu-16/materials/eu-16-Razavi-Flip-Feng-Shui-Rowhammering-The-VMs-Isolation-wp.pdf