Skip to content

TeleHammer

Implicit Rowhammer için biçimsel (formal) bir model: iyi niyetli ayrıcalıklı bir varlığa, saldırganın dokunamayacağı bir row'u hammer'layan DRAM erişimlerini yaptırmak.

Mechanism

Note

Klasik Rowhammer (bu çalışmada "PeriHammer"), saldırganın sömürülebilir bir hammer row'unun en azından bir kısmına doğrudan erişmesini gerektirir. TeleHammer bu gereksinimi ortadan kaldırır: bir privilege boundary'yi geçerek, yerleşik hardware/software özellikleri tarafından üretilen implicit DRAM erişimleri aracılığıyla erişilemez bir row'u gizlice (stealthily) hammer'lar. Makale bunu yönlü (directed) bir memory graph ile formalize eder — saldırganın bir ma düğümüne erişimi, iyi niyetli bir varlığı (örn. CPU'nun address-translation unit'i) tetikler ve bu varlık, erişilemez hammer adresi mh'a yapılan bir implicit DRAM erişimiyle biten bir iletişim yolunu yürür. Stealthy'dir çünkü saldırgan asla mh'a dokunmaz (hammer'lamayı iyi niyetli bir domain yapar) ve mitigate etmesi zordur çünkü birçok farklı iletişim yolu aynı sınıfı oluşturur, bu yüzden bir yolu engellemek TeleHammer'ı durdurmaz.

Ayırt edici TeleHammer koşulu bir timing gereksinimidir: daha uzun implicit yol P(ma, uh, mh) üzerinden yönlendirme, activation'ların victim'i bozacak kadar hızlı gelmesi için yine de hammer başına bütçe Tmax içinde tamamlanmalıdır.

Walkthrough

Makalenin somut örneği, address-translation özelliğini bedavaya kullanan (freeload) PThammer'dır: bir user-space erişimi, bellekten bir Level-1 page-table entry (L1PTE) load'unu indükleyebilir ve saldırgana erişilemez bir L1PTE'yi hammer'lar. L1PTE bilinçli olarak seçilir — page-table walk'taki son memory erişimidir (bu yüzden yol gecikmesi T≈0), yalnızca TLB ve cache flush edilmelidir (ayrıcalıklı paging-structure cache'leri değil) ve bir L1PTE flip'i en kolay şekilde privilege escalation verir.

  1. Spray / pusu (ambush): kernel'i öyle spray'le ki page-table sayfaları bazı L1PTE'ler hammer row'larında, bazıları victim row'larında olacak şekilde otursun.
  2. Eviction pool'ları oluştur (tek seferlik): ayrıcalıklı instruction'lar olmadan bir hedef TLB entry'sini ve cache line'ını implicit olarak flush eden TLB eviction set'leri ve LLC eviction set'leri.
  3. Yolu belirt: hedef mapping'i TLB'den ve L1PTE'yi cache'ten flush et, daha üst paging-structure cache'lerini geçerli tut; böylece sonraki user erişimi L1PTE'nin bir DRAM fetch'ini zorlar.
  4. Implicit double-sided hammer: çevirileri (translation) victim'e komşu iki L1PTE'yi load eden iki user page'ine tekrar tekrar eriş — gerçek DRAM activation'larını address-translation unit yapar.
  5. Flip'i sömür: victim L1PTE'deki flip ile bir sayfayı remap et / izinleri değiştir.
Bildirilen sayılar (makaleden)
  • L1PTE'lerde ilk bit flip, double-sided hammering'in ~15 dakikası içinde (5 koşu üzerinden ortalama, superpage'ler açık ya da kapalı).
  • Lenovo X230'da hammer başına bütçe: Tmax < ~1500 cycle.
  • Gözlemlenen maksimum hammer-to-victim mesafesi Rmax = 2 (bazı savunmaların varsaydığı mesafe-1'e karşı).
  • Makineler: Lenovo T420 / X230, Dell E6420 (Sandy Bridge, 4-way L1 dTLB / 4-way L2 sTLB). DDR3 ve DDR4'ün her ikisi de zayıf olarak belirtildi.

Detection

Performance-counter / hammering-anomaly tespiti ana adaydır, ama yazarlar bunun "doğası gereği false positive ve/veya false negative'lere yatkın" olduğunu belirtir ve implicit erişimler iyi niyetli kernel aktivitesine atfedilir.

Mitigation

PThammer'ın yalnızca-yazılım DRAM-isolation savunmaları CATT, RIP-RH ve CTA'yı yendiği gösterilmiştir (RIP-RH kernel page table'larını korumaz). Refresh-rate donanım savunmaları (PARA, TRR, TWiCe) Tmax'i küçültüp timing koşulunu kırabilir ama yeni donanım gerektirir ve legacy sistemleri korumaz.

References