PThammer¶
Attacker'ın doğrudan dokunamadığı kernel page-table entry'lerini hammer'layan bir confused-deputy Rowhammer; bunu, page-table walk sırasında CPU'yu implicit memory access'ler yapmaya zorlayarak başarır.
Mechanism¶
Note
Birçok Rowhammer savunması, attacker'ın yalnızca explicit olarak access edebildiği row'ları hammer'layabileceğini varsayar. PThammer bu varsayımı implicit access'ler kullanarak kırar: CPU, translation'ı tam olarak cache'lenmemiş bir address için page-table walk yaptığında, page-table entry'lerini DRAM'den okur. Paging-structure (MMU) cache'inde partial bir translation present ise, walk üst seviyeleri atlar ve yalnızca last-level entry'ye (L1 PTE) implicit olarak access eder. Attacker, ilgili paging-structure cache entry'sini tekrar tekrar evict edip ardından bir address'e dokunarak, hardware'in kendisinin belirli bir kernel L1PTE'yi DRAM'den tekrar tekrar okumasını sağlar — onu okuma iznine hiç sahip olmadan hammer'lar.
PThammer (Zhang et al., MICRO 2020) bir cross-user-kernel-boundary saldırısıdır: unprivileged bir user, kernel-owned last-level page-table entry'lerinde exploit edilebilir bit flip'ler indükler ve kernel privilege'a escalate eder. Hammering, implicit page-table-walk access'leri üzerinden yapıldığından, yalnızca explicit access'leri kısıtlayan pratik savunmaları aşar. Bu, daha genel "implicit Rowhammer" (TeleHammer) modelinin bir örneğidir.
Walkthrough¶
Attacker, paging-structure cache'i yöneterek implicit access'i kontrol eder; böylece her victim access'i, target L1PTE'nin taze bir DRAM read'ini tetikler:
1. Pick a victim virtual address whose L1PTE resides on a templated,
flip-vulnerable DRAM cell (kernel page table).
2. Evict the paging-structure cache entry for that translation so the next
access forces a page-table walk down to the L1PTE.
3. Access the address -> CPU implicitly reads the L1PTE from DRAM (an activation).
4. Repeat 2-3 at high rate -> the L1PTE row is hammered without explicit access.
5. A flip in the PFN of that L1PTE remaps a page -> kernel R/W -> privilege gain.
Implicit read'i zorlamak, MMU/paging-structure cache'ini kontrol etmeyi gerektirir; kavramsal olarak:
// Conceptual: each iteration evicts the cached partial translation, then a
// single access drives one implicit DRAM read of the target L1PTE.
for (iter = 0; iter < HAMMER_COUNT; iter++) {
evict_paging_structure_cache(target_translation);
access(victim_vaddr); // page-table walk -> implicit L1PTE read (activation)
}
Detection¶
- Anormal page-table-walk / MMU-cache-miss oranları ve kernel page-table sayfalarındaki ECC hataları birer sinyaldir; "hammering" trafiği direct load'lar değil MMU tarafından üretildiğinden access pattern alışılmadıktır.
Mitigation¶
- SoftTRR (page table'lar için software-only target row refresh) gibi page-table'a yönelik savunmalar özellikle L1PTE'leri bu sınıfa karşı korur.
- ECC, TRR/PRAC ve guard-row allocation flip'leri azaltır veya yerini değiştirir; page table'ları attacker-influenced physical row'ların dışında tutmak placement'ı engeller.