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.
- ~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
}
-
Bir trace kaydet: tüm page load boyunca sample'lar topla (örn. birkaç saniyede birkaç bin sample).
-
Classify et. Occupancy time-series'ini, ziyaret edilen web sitesini çıkaran eğitilmiş bir model'e (CNN/LSTM) besle.
Expected results (Shusterman et al.)
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.