Blacksmith¶
In-DRAM Target Row Refresh (TRR)'ı yenmek için non-uniform, frequency-domain hammering pattern'leri (frequency / phase / amplitude) üreten bir Rowhammer fuzzer'ı — test edilen 40 DDR4 DIMM'in hepsinde bit flip elde etti.
Mechanism¶
Neden çalışır
TRR (Target Row Refresh), hammer'lanan row'ları izleyip flip olmadan önce aggressor komşularına fazladan bir refresh sıkıştıran in-DRAM savunmadır. Sampler'ı sonlu kapasiteye ve sabit bir detection heuristic'ine sahiptir: yalnızca bir avuç aggressor'ı takip edebilir ve saldırganların row'ları uniform hammer'ladığını varsayar (her aggressor aynı sayıda, lockstep halinde) — önceki single-/double-/n-sided pattern'lerin yaptığı gibi. TRRespass many-sided hammering'in sampler'ı boğduğunu zaten göstermişti; Blacksmith daha da ileri gidiyor.
Blacksmith'in invariant'ı: sampler'ın kandırılıp kandırılmadığını erişimlerin sırası, düzenliliği ve yoğunluğu belirler — sadece ham sayı değil. Bir hammering pattern'ini frequency domain'de üç düğmeyle modeller:
- frequency — her aggressor'ın bir refresh interval içinde ne sıklıkla erişildiği,
- phase — erişimlerin refresh interval'ın neresine düştüğü,
- amplitude — burst başına kaç erişim olduğu.
Aggressor'ları farklı, non-uniform frequency'lerde hammer'latarak pattern, gerçek victim row'ları sürekli baskı altında tutarken — uniform varsayımına senkronize olan — TRR sampler'ı tekrar tekrar yanlış row'ları refresh eder. Bu tür pattern'lerin uzayı devasa olduğundan Blacksmith parametreleri her DIMM için fuzz'lar.
Bu doğrudan klasik Rowhammer ve double-sided / many-sided eskalasyonunun üzerine kurulur; TRRespass ise geliştirdiği doğrudan selefidir.
Walkthrough¶
Referans implementasyonu COMSEC (ETH Zürich) tarafından açık kaynaklıdır.
1. Build. DRAM row/bank addressing'in kontrol edilebilmesi için contiguous bir physical region'a (1 GB hugepage) ihtiyaç duyar.
git clone https://github.com/comsec-group/blacksmith
cd blacksmith && mkdir build && cd build
cmake .. && make -j
2. Kurulu DIMM üzerinde pattern'leri fuzz'la. Blacksmith rastgele frequency / phase / amplitude atamaları örnekler, bunları hammer'lar ve contiguous region'ı flip için tarar; flip üreten pattern'leri saklar.
Temsili fuzzing çıktısı
[+] mapped 1 GiB hugepage, base PA 0x1c0000000
[+] reverse-engineered DRAM addressing: 16 banks
[+] fuzzing non-uniform patterns (freq/phase/amplitude) ...
[+] pattern #2271 aggressors=18 -> 4 bit flips
[+] best pattern this run: 138601 total bit flips
[+] dumping effective pattern + mapping to stdout.json
3. Kazanan pattern'i replay et ve exploit edilebilir bir hedefte (page table
entry, RSA-2048 modulus veya sudo binary'si) bir flip elde et. Raporlanan
uçtan uca exploitation, üreticiye bağlı olarak ~saniyelerden saatlere kadar değişti.
Tuzaklar
- Gerçekten contiguous bir region (hugepage /
pagemap) olmadan aggressor'ları ve victim'i aynı bank'a güvenilir biçimde yerleştiremezsin — gürültü hammer'larsın. Bkz. DRAM bank/row addressing reverse engineering. - Pattern'ler DIMM'e özeldir: bir modülde kazanan bir frequency ataması nadiren başka modüle aktarılır; sabit bir pattern yerine fuzzing'in gerekmesinin nedeni tam olarak budur.
Detection¶
- Bank başına patolojik row-activation (
ACT) oranları için performance-counter monitörleri hammering'i işaretleyebilir; Blacksmith'in non-uniformity'si thresholding'i zorlaştırır. - DDR5 on-die ECC ve refresh-management (RFM) çıtayı yükseltir ama tam bir çözüm değildir.
Mitigation¶
- Düzgün Rowhammer mitigation'a sahip belleğe geç (RFM / probabilistic refresh, daha güçlü TRR, ECC); artırılmış refresh rate (daha düşük tREFI) flip'leri azaltır ama ortadan kaldırmaz.
References¶
- P. Jattke, V. van der Veen, P. Frigo, S. Gunter, K. Razavi. BLACKSMITH: Scalable Rowhammering in the Frequency Domain. IEEE S&P 2022 — https://comsec.ethz.ch/wp-content/files/blacksmith_sp22.pdf
- COMSEC project page — https://comsec.ethz.ch/research/dram/blacksmith/
- Source — https://github.com/comsec-group/blacksmith