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¶
- Hash'i türet. µTag function'ını reverse-engineer et ki herhangi bir hedef adres için colliding bir virtual address hesaplayabilesin.
- Predictor state'ini ayarla. Way predictor'ı eğitmek için colliding attacker adresine access et.
- Victim'i çalıştır.
- Probe. Attacker adresine yeniden access et ve
rdtscile 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.