Skip to content

Many-sided Rowhammer

DRAM-içi Target Row Refresh (TRR) sampler'ını taşırmak için bir bank'te çok sayıda aggressor row'u (genellikle 4–20+) hammer'la, böylece bazı aggressor'lar mitigation'dan kaçar ve yine de kurbanlarını flip'ler — TRR-korumalı DDR4'ü yeniden kıran teknik.

Mechanism

Sadece cell'leri değil, tracker'ı boğ

DDR4 çipleri Target Row Refresh (TRR) ile gelir: DRAM (ya da memory controller) row activation'larını sample'lar ve bir row aşırı aktive edilmiş göründüğünde o row'un olası kurbanlarını proaktif olarak refresh eder. TRR aynı anda yalnızca sınırlı sayıda aggressor row'u izleyebilir. Klasik Rowhammer bir ya da iki aggressor kullanır — kolayca yakalanır.

Many-sided (n-sided) hammering ise activation'ları aynı bank'teki çok sayıda aggressor row'a yayar. Yeterince farklı aggressor ile sampler boğulur: hepsi için counter tutamaz, dolayısıyla en azından bazı aggressor'lar izlenmeden kalır ve refresh'leri issue edilmez — bu row'ların kurbanlarındaki bit'leri flip'leyecek kadar disturbance biriktirmesine izin verir. TRRespass, üç büyük üreticinin gerçek DDR4'ünde ~20'ye kadar aggressor'ın yettiğini gösterdi.

Bu, double-sided hammering'in TRR-bypass eden genelleştirmesidir ve TRRespass'in temelidir; daha sonra Blacksmith pattern'leri non-uniform/frequency tabanlı yapar.

Walkthrough

1. Bank/row mapping'ini geri kazan. Çok sayıda aggressor'ı kontrollü row mesafelerinde aynı bank'e yerleştirmelisin; önce mapping'i geri kazan (bkz. DRAM bank/row addressing reverse-engineering).

2. Bir n-sided pattern kur. Bank'teki N aggressor row'u seç ve toplam activation'lar yüksek kalırken hiçbir tek row baskın olmayacak şekilde onları round-robin hammer'la.

aggressors = {R0, R1, ..., R_{N-1}}  // same bank, N up to ~20
loop:
    for r in aggressors:
        access(r); flush(r)   // activate each aggressor in turn

3. N ve offset'leri tara; template'le. Side sayısını ve row aralığını değiştir, hammer'layıp flip'ler için tara, çünkü optimal N çipin TRR sampler boyutuna bağlıdır.

TRRespass result (S&P 2020)
up to ~20 aggressor rows bypass TRR
flips on DDR4 from Samsung, Micron, Hynix (>95% market)
also LPDDR4(X) on mobile

Aynı bank zorunludur

Tüm aggressor'lar aynı bank'e map olmalıdır ki tek bir row buffer üzerinde yarışsınlar ve her erişim bir row'u yeniden aktive etsin. Aggressor'ları bank'lere yaymak hiçbir tek TRR counter'ını zorlamaz ve flip üretmez.

Mitigation

  • Daha büyük / daha akıllı TRR sampler'ları ve per-bank counter'lar daha fazla aggressor izler (yeterli side / Blacksmith ile hâlâ bypass edilebilir).
  • Artırılmış refresh rate ve ECC flip'leri azaltır ya da düzeltir.
  • DDR5 on-die refresh-management (RFM) çıtayı yükseltir.

References