ZebRAM¶
Her data row'u kullanılmayan bir "guard" row ile interleave eden software-only bir Rowhammer savunması; böylece hammer kaynaklı flip'ler yalnızca sistemin güvenmediği memory'ye düşebilir.
Mechanism¶
Note
Rowhammer, fiziksel olarak bitişik row'lar yüksek frekansta activate edildiğinde bir victim DRAM row'unda bit flip'ler. ZebRAM'in invariant'ı: live data tutan hiçbir row başka bir data row'a fiziksel olarak bitişik değilse, hammer kaynaklı bir flip yalnızca güvenilir hiçbir şey tutmayan bir guard row'a düşebilir. Bunu, her data row'u flip'leri absorbe eden bir guard row ile interleave ederek zorlar — bir placement property olduğundan, access pattern'ından bağımsız olarak tüm Rowhammer varyantlarını kapsar. Layout, verinin physical DRAM'de nereye düşeceğini şeffaf biçimde kontrol etmek için CPU virtualization extension'ları kullanılarak tamamen yazılımda gerçekleşir, hiçbir hardware değişikliği olmadan.
ZebRAM bir savunmadır, bir saldırı değil. Paper'a göre o "Rowhammer'ın tüm formlarına karşı koruma sağlayan bilinen tek yöntemdir."
Walkthrough¶
Konoth et al., USENIX OSDI 2018 (VUSec). Conceptual tasarım:
- İnce bir hypervisor/virtualization katmanı, guest-physical'den host-physical'e DRAM mapping'i intercept eder.
- Physical row'lar bir safe set'e (her ikinci row) ve bir unsafe/guard set'e (aralarındaki row'lar) partition edilir.
- Live application/OS verisi yalnızca safe row'lara yerleştirilir; böylece her data row'un physical komşuları guard row'lardır.
- Guard row'ları hammer'lamak yalnızca diğer guard row'ların içindeki bit'leri flip'leyebilir — asla trusted data'yı değil.
- Guard yarısını boşa harcamamak için ZebRAM, unsafe row'ları integrity-checked (ve isteğe bağlı olarak compressed) bir swap device olarak expose eder; oraya spill edilen sayfalar read-back'te checksum-verify edilir, böylece swap'teki bir flip sessizce trust edilmek yerine tespit edilir.
Note
Maliyet, guard row'ları reserve etmenin capacity/performance trade-off'udur; bu kısmen onları swap olarak repurpose ederek geri kazanılır. Tam per-benchmark overhead rakamları paper'ın evaluation'ındadır; herhangi bir spesifik yüzdeyi paper-dependent olarak değerlendir.
Detection¶
Bir saldırı olarak uygulanamaz. Bir savunma olarak ZebRAM, swap bölgesindeki aksi halde sessiz olan corruption'ı tespit edilebilir bir integrity-check başarısızlığına dönüştürür.
Mitigation¶
ZebRAM mitigation'ın kendisidir: koruma pattern'a-özel bir filter değil bir layout invariant'ı olduğundan, tüm Rowhammer varyantlarını (single/double-sided, page-table corruption, key/pointer/instruction corruption) by construction savunur ve commodity CPU'larda virtualization extension'ları üzerinden, hiçbir firmware değişikliği olmadan çalışır.