Invalidate+Compare: A Timer-Free GPU Cache Attack Primitive¶
Cache'lenmiş line'ları invalidate edip yeniden okumaların architectural sonucunu karşılaştırarak bir victim'in cache footprint'ini hiçbir timer olmadan çıkaran bir GPU L2 cache side-channel primitive'i — NVIDIA Ampere ve Ada Lovelace GPU'larda timer-removal savunmalarını es geçer.
Mechanism¶
Note
Klasik GPU cache attack'leri (bkz. ./gpu-cache-side-channel-attack.md) bir cache hit'ini bir miss'ten zaman ölçerek ayırt eder, bu yüzden doğal bir savunma high-resolution GPU timer'larını bozmak veya kaldırmaktır. Invalidate+Compare bu varsayımı çökertir: suistimal ettiği invariant, bir cache-line invalidation'ının, line'ın resident ve coherent olup olmadığına bağlı architectural olarak gözlemlenebilir bir etkiye sahip olmasıdır. Bir line'ı invalidate edip ardından sonraki erişimde dönen value/state'i — erişimi zamanlamak yerine — beklenen bir baseline ile karşılaştırarak, attacker victim'in data'yı paylaşılan bir L2 cache set'ine getirip getirmediğini öğrenir. Bu, izlenen bir set'teki contention'ı clock olmadan gözlemlenebilir kılar, dolayısıyla timer tabanlı karşı önlemler koruma sağlamaz. ./prime-probe.md'da olduğu gibi channel, paylaşılan cache'teki set-contention'dır; yenilik timer-free readout'tur.
Walkthrough¶
USENIX Security 2024 paper'ından ve proje repository'sinden üst düzey.
-
Cache'i reverse-engineer et. Hedef GPU'nun L2 cache geometrisini ve replacement policy'sini karakterize et ve victim'in contend edeceği belirli cache set'lerine eşlenen eviction set'leri kur.
-
Timer-free readout'u kur. GPU'nun cache-line invalidation yeteneğini öyle kullan ki kontrollü bir re-access'in sonucu, bir cycle counter okumadan residency'yi yansıtsın — "compare" adımı geleneksel timed reload'un yerini alır.
prepare set -> victim runs (may touch monitored set) ->
invalidate monitored lines -> compare re-read result -> hit/miss inferred
-
Contention yoğunluğunu ölç. İzlenen L2 set'leri boyunca tekrarlamak, victim'in hangi set'lere ve ne kadar yoğun dokunduğunun bir trace'ini verir — side-channel sinyali.
-
Uçtan uca attack'ler gösterildi. Yazarlar bir website fingerprinting attack'i (sayfaları GPU-rendering cache contention'ından sınıflandırma) ve bir virtual keyboard üzerinde keystroke'ları çıkaran attack raporlar; her ikisi de modern NVIDIA Ampere ve Ada Lovelace parçaları üzerinde.
Raporlanan kapsam (USENIX Sec '24)
Warning
Channel bir driver kusuru yerine hardware cache davranışına dayandığı ve bir timer'a bağlı olmadığı için, olağan mitigation'lar (driver'ı patch'le, clock'u kabalaştır) readout'un kendisine karşı etkisizdir.
Detection¶
- Host'tan GPU microarchitectural state'ine yönelik savunma görünürlüğü sınırlıdır; bunu runtime'da tespit etmesi zor olarak ele al.
- Attack yerine co-residency risk'i avla: hassas rendering veya inference ile fiziksel bir GPU'yu paylaşan güvenilmeyen GPU workload'ları (WebGPU/compute kernel'leri) (bkz. ./webgpu-spy.md).
- Yapılandırılmış adres stride'ları üzerinde sıkı fill/invalidate/compare loop'ları yapan anomalous, tekrarlayan GPU compute kernel'leri, izlenen compute ortamlarında davranışsal bir kırmızı bayraktır.
Mitigation¶
- Hassas GPU işini güvenilmeyen koddan izole et: karşılıklı güvensiz tenant'lar arasında fiziksel bir GPU/L2 paylaşmaktan kaçın; mevcut olduğunda tenant başına GPU'ları veya katı spatial partitioning'i (örn. MIG tarzı partitioning) tercih et.
- Timer kabalaştırma/kaldırmaya güvenme — bu primitive tasarım gereği timer-free'dir.
- Secret-dependent GPU kernel'leri için constant-cache-footprint veya padded implementation'lar, suistimal edilebilir contention sinyalini azaltır.
- Mümkün olan yerlerde multi-tenant veya paylaşılan sistemlerde güvenilmeyen browser GPU erişimini (WebGPU) kısıtla.