Skip to content

Collide+Probe

Reverse-engineer edilmiş L1D way-predictor µTag hash'ini suistimal ederek bir victim'in memory access'lerini shared memory ya da bilinen physical address olmadan izleyen, AMD'ye özgü bir attack ("Take A Way").

Mechanism

AMD CPU'lar (Bulldozer'dan Zen'e, ~2011–2019), bir line'ı hangi cache way'in tuttuğunu tahmin etmek için virtual-address bit'lerinin bir hash'inden bir µTag türeten bir L1D way predictor kullanır; bu da power ve latency tasarrufu sağlar. "Take A Way" makalesi (Lipp et al., 2020) bu belgelenmemiş hash'i reverse-engineer etti.

Note

Aynı set içinde aynı µTag'e hash'lenen iki farklı virtual address predictor'da collide eder: birine access etmek way predictor'ın diğerini mispredict etmesine/evict etmesine yol açar ve ölçülebilir bir latency cezası üretir. Collide+Probe, victim access'lerini tespit etmek için bu µTag collision'larını kullanır — ne shared memory ne de physical address gerektirir. Cache set, virtual-address bit 6–11 ile seçilir. (Eşlik eden Load+Reload varyantı, aynı core'da daha gizli per-access trace'ler için shared physical memory kullanır.)

Walkthrough

  1. Hash'i türet. µTag function'ını reverse-engineer et ki herhangi bir hedef adres için colliding bir virtual address hesaplayabilesin.
  2. Predictor state'ini ayarla. Way predictor'ı eğitmek için colliding attacker adresine access et.
  3. Victim'i çalıştır.
  4. Probe. Attacker adresine yeniden access et ve rdtsc ile timing'le. Hit threshold'unun üzerindeki bir latency, victim'in o µTag'i paylaşan bir adrese access ettiği anlamına gelir — access pattern'ini set/µTag granülerliğinde açığa çıkarır.

Process'ler arası sızdırma, covert channel kurma, ASLR kırmaya yardım etme ve key'e bağlı access pattern'lerini geri kazanma gösterildi.

Detection

Victim tarafından zordur; bu tür counter'ların bulunduğu yerlerde, anormal way-predictor misprediction'ları için performance-counter izleme olası bir sinyaldir.

Mitigation

AMD side-channel-resistant kod ve en güncel patch'leri önerdi; makale, predictor input'unu key'leme/randomize etme ve access-pattern hardening'i tartışır ve daha sonraki AMD CPU'lar predictor davranışını değiştirdi.

References