Lord of the Ring(s)¶
Intel'in on-chip ring interconnect'i üzerindeki contention'dan faydalanan ilk pratik side-channel saldırıları; 4 Mbps'i aşan bir cross-core covert channel'ı ve RSA ile EdDSA implementasyonlarından cryptographic key bit'lerinin pratik şekilde çıkarılmasını mümkün kılar — hepsi shared memory olmadan.
Mechanism¶
Neden çalışır
Intel'in multi-core processor'ları; core'ları, last-level cache (LLC) slice'larını, system agent'ı ve I/O hub'ını bir ring interconnect üzerinden bağlar: çift yönlü, dairesel, paylaşılan bir bus. Her core ve LLC slice ring'e bir ring stop'ta bağlanır. Bir core, farklı bir ring segment'indeki bir LLC slice'a memory request gönderdiğinde, request ring boyunca dolaşır ve ara ring stop'lardan geçer. Bu traversal, hop sayısıyla ve her stop'taki rakip traffic miktarıyla ölçeklenen bir latency getirir. Ring tüm core'lar arasında paylaşıldığı için, bir core üzerinde çalışan bir attacker, başka bir core'daki victim'in ring traffic'inin neden olduğu kendi ring access latency'sindeki varyasyonları gözlemleyebilir — bu da bir side channel yaratır. Paccagnella, Luo ve Fletcher (USENIX Security 2021), ring'in belgelenmemiş protokollerini reverse-engineer etti, ring contention'a içkin gürültüyü çözdü ve elde edilen sinyalin pratik saldırılar için yeterli olduğunu gösterdi.
Walkthrough¶
Step 1 — Ring topology reverse engineering
Attacker önce (bilinen cache-slice selection tekniklerini kullanarak) her physical address'e hangi LLC slice'ın karşılık geldiğini haritalar ve ring'in linear olduğunu, komşu olmayan ring stop'lar arasındaki traffic'in ara stop'lardan geçtiğini doğrular.
// Measure load latency from core C to LLC slice S across multiple configs
// to infer ring topology and stop placement
for (int s = 0; s < NUM_SLICES; s++) {
uint64_t lat = time_load_to_slice(attacker_core, s);
printf("Core %d -> Slice %d: %lu cycles\n", attacker_core, s, lat);
}
Step 2 — Contention monitoring
Attacker, uzak bir LLC slice'a map'lenen bir adrese tekrarlı load'lar gönderir ve her round trip'i zamanlar. Victim aynı anda ring traffic ürettiğinde (örneğin başka bir core'dan LLC access'leri), ara ring stop'lardaki contention attacker'ın ölçtüğü latency'yi şişirir.
// Attacker: repeatedly time an LLC load to detect ring contention
while (1) {
uint64_t t0 = rdtsc();
asm volatile("mov (%0), %%eax" :: "r"(probe_addr) : "eax", "memory");
uint64_t delta = rdtsc() - t0;
if (delta > CONTENTION_THRESHOLD)
log_event(timestamp, delta); // victim ring activity detected
}
Step 3 — Covert channel construction
Sender ve receiver timing window'ları üzerinde anlaşır. Sender, bit'leri encode etmek için ring traffic'ini (high vs. low) modüle eder; receiver, onları decode etmek için kendi load latency'lerini gözlemler.
??? Covert channel throughput (from paper):
Single-thread cross-core channel: > 4 Mbps
(Largest reported for a cross-core channel without shared memory at time of publication)
Step 4 — Cryptographic key extraction
Ring contention, cryptographic operasyonlar sırasında victim'in LLC access pattern'iyle korelasyon gösterir. Attacker, secret-dependent code path'leri ayırt etmek için contention trace'leri üzerinde bir classifier eğitir.
Victim: EdDSA signing with secret scalar bits b0 b1 b2 ...
Attacker trace: [HIGH, LOW, HIGH, HIGH, LOW, ...]
Classified bits: [1, 0, 1, 1, 0, ...] <- recovered key bits
Shared memory gerekmez
Flush+Reload ya da Prime+Probe'un aksine, ring interconnect saldırıları shared memory ve cache eviction gerektirmez. Attacker ve victim'in yalnızca aynı processor package'ında co-reside olması yeterlidir.
Sinyal gürültüsü
Ham ring contention sinyalleri gürültülüdür ve kaba spatial granularity'ye sahiptir. Pratik saldırılar güvenilir bit recovery elde etmek için statistical filtering, dikkatli timing ve (key extraction için) machine-learning classifier'lar gerektirir.
Detection¶
- Hardware performance counter'lar: Intel bazı ring ile ilgili event'ler sağlar (örneğin server processor'larda
UNC_CHA_RING_*uncore counter'ları). Unprivileged process'lerden gelen anomalous ring utilization pattern'leri aktif probing'e işaret edebilir; ancak bu counter'lar root olmadan her zaman erişilebilir değildir. - Timing anomaly detection: Tek bir thread'den gelen olağandışı düzenli, yüksek frekanslı LLC access pattern'leri (ring probing loop'larıyla tutarlı) kernel seviyesindeki security monitor'lar tarafından işaretlenebilir.
- Process isolation: Beklenmedik cross-core process co-location'ını izleyin; özellikle hassas cryptographic process'ler bir package'ı untrusted code ile paylaştığında.
Mitigation¶
- Ring traffic isolation: Processor'ı, hassas workload'lar ile untrusted code'un aynı ring package'ını paylaşmayacağı şekilde partition'layın (fiziksel makine izolasyonu ya da VM'lerin ayrı package'lara pin'lenmesi).
- Constant-time cryptography: Data-independent memory access pattern'lerine sahip cryptographic implementasyonlar, attacker'ın gözlem yeteneğinden bağımsız olarak herhangi bir cache ya da ring side channel üzerinden key leakage'ı engeller.
- LLC cache partitioning (Intel CAT): Cache Allocation Technology, bir process'in allocate edebileceği LLC cache way'lerini (per-CLOS) sınırlayabilir — hangi slice'lara eriştiğini değil, çünkü slice'lar address hashing ile belirlenir ve tüm process'lere açıktır. Way allocation'ı kısıtlamak victim'in cache footprint'ini azaltır ve ring contention tabanlı gözlemi zorlaştırır.
- Hyperthreading / co-scheduling'i devre dışı bırak ya da sınırla: Ring saldırıları cross-core olsa da (same-core değil), aynı package üzerinde untrusted ve hassas workload'lar arasındaki scheduling co-location'ını azaltmak riski düşürür.
- Hardware countermeasure'lar: Gelecekteki interconnect tasarımları ring arbitration'a randomization ekleyebilir ya da per-domain ring traffic isolation ekleyebilir; paper bulgularını Intel'e bildirdi.