Skip to content

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.

  1. 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.

  2. 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 */
}
  1. Bir delay sequence kaydet. delays[] serisi bir time-domain trace oluşturur; spike'lar victim mesh aktivitesiyle çakışır.

  2. 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ış
delay sequence (attacker tile):
  idle baseline ......~low latency
  victim active ......~elevated latency (mesh contention)
-> trace shape tracks victim memory-access pattern over time
-> analysis of an RSA victim partially recovers the private key

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.

References