Skip to content

Cache Occupancy Channel

Belirli cache set'lerini konumlandırmak yerine, bir victim'in zaman içinde tüm last-level cache'in ne kadarını işgal ettiğini ölç — kaba ama robust bir sinyal; sandbox'lı JavaScript'ten website fingerprinting için kullanılır.

Mechanism

Note

Fine-grained cache attack'lar (Prime+Probe, Flush+Reload) bir victim'in hangi cache set ya da line'a dokunduğunu tam olarak belirler; bu da eviction set'leri inşa etmeyi ve adresleri çözmeyi gerektirir — kırılgandır ve sandbox'larda çoğu zaman engellenir. Cache occupancy channel'ı daha kaba bir soru sorar: victim şu anda LLC'nin ne kadarını kullanıyor? Değişmez nokta şu: attacker kabaca LLC boyutunda bir buffer allocate eder ve tekrar tekrar access eder; kendi buffer'ını sweep etme süresi, victim'in kaç line evict ettiğine — yani victim'in toplam cache footprint'ine — göre yükselir ve düşer. Eviction-set inşası yok, adres yok, high-resolution timer gerekmiyor. Zaman içinde sample'lanan occupancy trace'i bir feature vector'üne dönüşür. Farklı web siteleri bir page load boyunca kendine özgü memory/cache aktivitesine sahip olur, dolayısıyla bir classifier (çoğu zaman bir neural net) occupancy trace'ini siteye map'ler — kaba timer'lara ve JS sandbox kısıtlamalarına dayanan website fingerprinting.

Walkthrough

Unprivileged kod olarak, bir browser sekmesindeki JavaScript dahil, victim aktivitesinin (bir page yükleyen başka bir sekme / process) yanında çalışır.

  1. ~LLC boyutunda bir buffer allocate et ve sürekli üzerinde gez, sweep süresini occupancy sample'ı olarak kaydet:
#define LLC_BYTES (8*1024*1024)     // ~ size of the last-level cache
static char buf[LLC_BYTES];

uint64_t occupancy_sample(void) {
    uint64_t t0 = now_ns();
    for (size_t i = 0; i < LLC_BYTES; i += 64)   // touch one line per stride
        sink += buf[i];
    return now_ns() - t0;            // longer sweep => victim used more cache
}
  1. Bir trace kaydet: tüm page load boyunca sample'lar topla (örn. birkaç saniyede birkaç bin sample).

  2. Classify et. Occupancy time-series'ini, ziyaret edilen web sitesini çıkaran eğitilmiş bir model'e (CNN/LSTM) besle.

Expected results (Shusterman et al.)
Signal:    whole-LLC occupancy over time (sweep latency)
No need:   eviction sets, addresses, or a high-res timer
Works in:  JavaScript, across browsers / Tor; resilient to coarse timers
Use:       robust website fingerprinting, high closed/open-world accuracy

Detection

Memory-yoğun benign bir workload'dan ayırt etmesi zordur; sürekli full-cache sweep'leri üzerinde browser telemetry'si zayıf bir heuristic'tir.

Mitigation

Güvenlik domain'i başına cache partitioning (Intel CAT); JS timer çözünürlüğünü ve jitter'ı düşürmek (fine attack'ları sınırlar ama occupancy buna karşı robust'tur); cache-coloring / site isolation; randomize cache replacement ve aktivite maskeleme.

References