Volcano (mesh interconnect attack)¶
CPU mesh interconnect üzerindeki trafik contention'ını ölçerek bir victim'in memory-access pattern'ini sızdıran, victim'de herhangi bir stateful microarchitectural değişikliğe dayanmayan stateless bir cache side-channel.
Mechanism¶
The invariant
Mesh-topology server CPU'larında cache line'lar point-to-point gitmez: bir core tile ile bir LLC slice (ya da memory controller) arasındaki her transfer, shared bir 2-D mesh interconnect üzerinden route edilir. O mesh'in link'leri sonlu, shared bir kaynaktır ve herhangi bir güvenlik boundary'siyle partition edilmez — cache'lerin spatial partitioning'i (örn. way/set isolation) ve temporal partitioning (context switch'ler arasında flushing), interconnect trafiğini ayırmak için hiçbir şey yapmaz. Volcano bunu sömürür: bir tile'daki attacker kendi mesh trafiğini üretir ve kendi transaction'larının ne kadar sürdüğünü timing'ler. Başka bir tile'daki bir victim memory erişimleri yaptığında, paketleri aynı mesh link'leri için yarışır ve attacker'ın transaction'ları yavaşlar. Leak, kalıcı bir state değişikliği (evict edilmiş bir line, prime edilmiş bir set) yerine shared bir bus üzerindeki contention tarafından taşındığından, Volcano stateless'tır: hem spatial hem temporal isolation'dan sağ çıkar — ki bunlar klasik Prime+Probe ve Flush+Reload'u yenen savunmalardır. Attacker, şekli zaman içinde victim'in access pattern'iyle korele olan bir delay sequence recover eder.
Walkthrough¶
Bu, yayımlanan metodolojinin (Wan, Bi, Zhou, Li, 2021) kavramsal bir yeniden kurgusudur. Hazır bir exploit sağlamaz.
-
Bir mesh CPU'da co-residency kur. Attacker ve victim aynı mesh-interconnect işlemcisinin farklı tile'larında çalışır. Shared bir cache bölgesi ya da shared memory gerekmez.
-
Yarışan interconnect trafiği üret. Attacker, victim'in trafik path'iyle paylaşılan mesh link'lerinden geçmesi gereken bir memory transaction stream'i gönderir, sonra her transaction'ı timing'ler.
/* conceptual: repeatedly time a transaction that crosses shared mesh links */
for (i = 0; i < N; i++) {
t0 = rdtscp();
touch_remote_line(probe_addr); /* routed across the mesh */
delays[i] = rdtscp() - t0; /* contention-sensitive latency */
}
-
Bir delay sequence kaydet.
delays[]serisi bir time-domain trace oluşturur; spike'lar victim mesh aktivitesiyle çakışır. -
Victim'in secret'a bağlı control flow'uyla korele et. Paper'ın vaka çalışmasında, yazarlar bir victim RSA operasyonu sırasında delay sequence'leri topladı ve contention trace'inin sızdırdığı memory-access pattern'inden private key'in kısmen recover edilebileceğini gösterdi.
Warning
Channel contention-based ve stateless olduğundan, cache state'i izole etmeye ya da flush'lamaya dayanan mitigation'lar etkisizdir. Savunmalar ya interconnect'in kendisini (traffic shaping, partitioning) ya da victim'in data'ya bağlı memory davranışını (constant-time kod) hedeflemelidir.
Beklenen davranış
Detection¶
Contention saldırılarını software'den tespit etmek zordur: attacker yalnızca kendi meşru görünen memory erişimlerini timing'ler. Co-resident bir tenant'tan gelen anormal, sürekli yüksek hızlı probing zayıf bir heuristic sinyaldir.
Mitigation¶
- Constant-time / data-oblivious kriptografik implementasyonlar, channel'ın gözlediği secret'a bağlı access pattern'ini ortadan kaldırır.
- Interconnect seviyesinde traffic partitioning ya da shaping, kök contention channel'ını ele alır.
- Kavramsal olarak ilişkili ring-interconnect contention çalışması: lord-of-the-ring; diğer interconnect-sınıfı sızıntı: crosstalk.