Skip to content

rhoHammer

Modern Intel parça'larında Rowhammer'ı, DRAM row activation'larını sürmek için load'lar yerine non-blocking software prefetch instruction'ları kullanarak yeniden canlandırmak.

Mechanism

Note

Rowhammer, bir aggressor row'dan komşularına yeterli charge sızdırmak için tek bir refresh window içinde çok yüksek oranda row activation'a ihtiyaç duyar (DDR4'te tREFI ≈ 7.8 µs). Yeni Intel core'larında (Alder/Raptor Lake), konvansiyonel load tabanlı hammering — clflush ile bile — artık gereken activation rate'ine ulaşamaz, çünkü her load line geri dönene kadar blok eder. rhoHammer, read'i bir x86 software-prefetch instruction'ıyla (PREFETCHT2 / PREFETCHNTA) değiştirir. Bir prefetch non-blocking'tir: address translation tamamlanır tamamlanmaz ve memory request kuyruğa girer girmez retire olur, dolayısıyla pipeline DRAM'i beklerken stall etmez. Bu, core'un activation'ları çok daha hızlı issue etmesine ve multi-bank parallelism'i sömürmesine izin verir, activation rate'ini load hammering'in başarısız olduğu parçalarda bit-flip threshold'unun üstüne geri iter.

Prefetch hammering'in çalışması için üç engelin çözülmesi gerekir: karmaşık (açıklanmamış) DRAM address mapping, activation-rate gereksinimi ve prefetch'lerin speculative/out-of-order execution tarafından re-order edilmesi. rhoHammer sonuncusunu control-flow obfuscation ve NOP tabanlı pseudo-barrier'larla ele alır, böylece prefetch'ler gerçekten amaçlanan sırada issue olur.

Walkthrough

İç hammer body'si, aggressor adreslerine load'lar yerine prefetch issue eder. Kavramsal olarak:

; row_a, row_b = aggressor rows in the same bank, different rows
loop:
    prefetchnta (row_a)     ; non-blocking activate, no pipeline stall
    prefetchnta (row_b)
    ; pseudo-barrier / control-flow obfuscation keeps issue order
    dec    rcx
    jnz    loop

Paper, ampirik olarak en iyi performans gösterenler olarak PREFETCHT2 ve PREFETCHNTA'yı raporlar (ISA ayrıca PREFETCHT0/PREFETCHT1 de sunar). Row'ları hedeflemek için saldırgan önce DRAM address mapping'i, 10 saniyenin altında tamamlanan bir pairwise deduction yöntemiyle reverse-engineer eder (önceki araçlar için yüzlerce–binlerce saniyeye karşın).

Reported results (2-hour campaigns)
  • Comet Lake (i7-10700K): up to ~257,881 flips, ≈187K flips/min — about 112× the load-based baseline.
  • Rocket Lake (i7-11700): ≈47K flips/min (≈47×).
  • Alder Lake (i9-12900): ≈995 flips/min; end-to-end exploit ≈3 min 8 s.
  • Raptor Lake (i7-14700K): ≈2,291 flips/min — the first reported flips on Raptor Lake, where load-based baselines produce none; exploit ≈51 s.

Mitigation

Hardware: per-window activation etkisini sınırlayan in-DRAM ve memory-controller mitigation'ları (TRR/PRAC tarzı refresh management), activation'ların nasıl issue edildiğinden bağımsız olarak çıtayı yükseltir. Load trafiğini throttle eden veya hesaba katan önceki software defense'leri prefetch-driven activation'ları mutlaka gözlemlemez, dolayısıyla prefetch hammering, load pattern'lerine göre ayarlanmış defense'leri evade edebilir.

References