Skip to content

Prime+Retouch

Veriyi kendisini okumak yerine replacement-policy metadata'sını (Tree-PLRU) okuyarak victim cache erişimlerini sızdır — böylece victim'in line'ları hiç evict edilmez, eviction tabanlı ve locking/prefetch savunmaları alt edilir.

Mechanism

Neden çalışır

Bir set-associative cache, bir miss'te hangi line'ı evict edeceğine karar vermelidir. Birçok CPU Tree-PLRU kullanır: set başına, en son kullanılan way'den uzağa ve bir sonraki eviction victim'ine doğru işaret eden küçük bir ikili bit ağacı. Her erişim — hit ya da miss — erişilen way'e giden yol boyunca ağaç bitlerini flip'ler. Önemlisi, bu metadata set'teki tüm line'lar tarafından paylaşılır ve hiçbir şey evict etmeyen düz bir cache hit'te bile güncellenir.

Prime+Retouch, metadata'nın veriyi dokunulmadan bırakan erişimlerin paylaşılan bir yan etkisi olmasından faydalanır. Attacker set'i prime ederek tüm way'lere sahip olur, sonra kendi line'larını seçilmiş bir sırada "retouch" ederek PLRU ağacını bilinen bir duruma sürer. Eğer victim sonra set'e erişirse — sadece zaten mevcut bir line'a hit etse bile — PLRU bitlerini bozar. Attacker bunu evict edilmiş verinin yavaş bir reload'uyla değil, policy'nin şimdi kendi line'larından hangisini bir sonraki victim olarak seçtiğini gözlemleyerek tespit eder. Invariant şu: replacement metadata set'e yapılan son erişimleri encode eder, dolayısıyla onu geri okumak victim'in verisini hiç evict etmeden victim'in erişimini sızdırır.

Hiçbir şey evict edilmediği için üç tanımlayıcı özellik (Lee, Sang, Kim, arXiv 2024) şunlardır: (1) victim'in verisini evict etmez, victim-line eviction'ını engelleyen mitigation'ları (örn. cache locking / preloading) atlar; (2) minimal senkronizasyon gerektirir — yalnızca attacker'ın önceden prime edilmiş line'larına tek bir memory erişimi; ve (3) non-shared memory üzerinden sızdırır, ama altta yatan eviction metadata paylaşıldığı için çalışır. Yazarlar bunu Intel x86 ve Apple M1 üzerinde, SGX içindeki korumalı AES'e karşı da dahil olmak üzere gösterir.

Walkthrough

Kavramsal olarak, tek bir set üzerinde iki faz:

PRIME   : access W attacker lines L0..L_{W-1} so they occupy every way and
          drive the Tree-PLRU into a known, attacker-chosen state.
(victim runs — it HITS or brings in a line in this set, flipping PLRU bits;
 no attacker line need be evicted)
RETOUCH : access (re-touch) a single, carefully chosen attacker line so the
          PLRU update reveals whether the victim had perturbed the tree.
          The observed eviction-victim selection differs depending on whether
          the victim accessed the set.

Bir "PLRU-aware retouch", policy tarafından ele alınışı tanılayıcı (diagnostic) olan tam o line'ı seçer, böylece tek bir attacker erişimi "victim set'e erişti" ile "victim erişmedi" durumlarını ayırt eder:

// sketch — one set, W ways; es[] = W congruent attacker lines
prime_set(es, W);          // own all ways; set Tree-PLRU to a known state

victim_window();           // victim may HIT a line in this set (no eviction)

// retouch one diagnostic line and infer victim activity from PLRU behaviour
int leaked = plru_aware_retouch(es);   // 0/1 = victim touched this set or not

Sinyal, bir DRAM-refill latency farkı değil, metadata transition'ıdır; bu yüzden klasik mitigation'lar onu kaçırır.

Hardware'e özgü

Prime+Retouch tam replacement policy'ye (burada Tree-PLRU) ve onun hit'lerde nasıl güncellendiğine bağlıdır. Diagnostic line ve retouch sırası microarchitecture başına ayarlanır; yayımlanan sonuçlar tüm CPU'ları değil, belirli Intel ve Apple M1 cache konfigürasyonlarını kapsar.

Mitigation

  • Replacement metadata'yı randomize et veya partition'la, böylece set başına PLRU state'i stabil, attacker tarafından okunabilir bir kanal olmaz.
  • Constant-time code tek başına burada yetersizdir: makalenin noktası, bunun leak ile birleştirilebilir olmasıdır; savunmalar sadece data eviction'ını önlemekle kalmayıp paylaşılan metadata kanalını da kaldırmalıdır.
  • Şunu unutma: cache locking ve prefetch/preloading savunmaları yardımcı olmaz, çünkü Prime+Retouch victim'in line'larını hiç evict etmez.

References