Skip to content

TRRespass

Aynı anda birçok aggressor row'u hammer'layarak in-DRAM Target Row Refresh'i boğ; böylece track edilmeyen aggressor'lar "Rowhammer-proof" DDR4 üzerinde hâlâ bit flip'ler.

Mechanism

Note

Target Row Refresh (TRR) tek bir mekanizma değil, "umbrella bir terim altında birleşmiş bir dizi farklı çözümdür" ve modern DDR4'te tamamen DRAM çipinin içinde çalışır. Bir sampler (en çok activate edilen row'ları, yani aday aggressor'ları izler) ve bir inhibitor (bir threshold aşıldığında komşu victim row'ların ekstra bir refresh'ini issue eder) aracılığıyla çalışır. TRRespass, sampler'ın yalnızca sınırlı sayıda aggressor row'u track edebilmesi gerçeğini exploit eder (bir modül yalnızca 4 tane track eder). Bir bank'a yayılmış birçok aggressor row'u hammer'layarak — Many-sided RowHammer — saldırgan sampler'ı boğar, böylece her gerçek aggressor track/refresh edilmez ve inhibit edilmemiş aggressor'lar victim'leri yine de bit flip'leyecek kadar disturb eder.

TRRespass'in kendisi, belirli bir modülün TRR'sini yenen pattern'ları bulmak için randomize edilmiş many-sided pattern'ları arayan scalable bir black-box RowHammer fuzzer'ıdır.

Walkthrough

Frigo et al., IEEE S&P 2020 (VUSec; github.com/vusec/trrespass).

  1. DRAM address mapping'i reverse-engineer et, böylece fuzzer hangi physical adreslerin aynı bank'ı paylaştığını bilir (drama tool'u).
  2. Aggressor row'ların sayısını ve yerleşimini değiştirerek randomize edilmiş many-sided pattern'ları fuzz'la (hammersuite fuzzer'ı).
  3. Her pattern'ı hammer'la ve flip'leri "Fliptable"lara kaydet.
  4. TRR'yi bypass eden pattern'ları bulmak için sonuçları analiz et.
Repo usage (from the README)

./drama        # reverse-engineer the DRAM memory mappings
sudo ./obj/tester -r 1000000 -v -V ff -T 00 --no-overwrite -o DIMM00   # double-sided test
sudo ./obj/tester -v --fuzzing                                          # many-sided fuzzing
Flag'ler: -r target row başına access, -V/-T victim/target data pattern'ları, -o output prefix. Sonuçlar Fliptable olarak export edilir, py/hammerstats.py ile analiz edilir.

Reported numbers (from the paper)
  • RowHammer 19 kadar aggressor row ile hâlâ çalışıyor.
  • 42 DDR4 modülünden 13'ü (üç büyük vendor'ın hepsi) TRR-aware pattern'lara karşı vulnerable. (Proje web sayfası "42'den 12" diyor; paper metni 13 diyor.)
  • Test edilen 13 LPDDR4(X) mobil telefondan 5'i susceptible.
  • In-DRAM mitigation kapalıyken, flip'ler 45K kadar az activation'da ortaya çıkıyor (DDR3'teki ~139K'ya karşı) — DDR4/LPDDR4(X) cell'leri daha zayıf.

Detection

In-DRAM TRR yazılım için görünmezdir ve hiçbir sinyal sağlamaz; saldırı sıradan bir unprivileged process olarak çalışır. Memory-access-rate / performance-counter detector'ları pratik (ve kusurlu) gözlem noktasıdır.

Mitigation

TRRespass, in-DRAM TRR'nin bypass edilebilir olduğunu many-sided hammering ile gösterir ve paper, ECC ile refresh rate'i ikiye/dörde katlamanın Rowhammer'a karşı genel olarak etkisiz veya yüksek-overhead olduğunu belirtir. İma edilen yön, doğru boyutlandırılmış TRR sampler'lar, vendor şeffaflığı ve ZebRAM gibi capacity-isolation savunmalarıdır.

References