Skip to content

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.list gibi 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.

[*] template: flip at PA 0x..., 1 -> 0, reliable

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)
- OpenSSH: flip a bit in an authorized RSA public key the attacker can then
  factor, enabling login.
- GPG/APT: flip a bit in apt's trusted key / sources.list to push a
  malicious package update.

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