Skip to content

Generic and Automated Drive-by GPU Cache Attacks from the Browser

WebGPU compute shader'ların içinde inşa edilen self-configuring eviction-set primitive'leri, sıradan bir web page'i bir GPU cache side-channel platformuna dönüştürür ve native code olmadan keystroke timing'lerini ve AES key'lerini leak eder.

Mechanism

Bug class: untrusted browser code'u shared, un-partitioned bir GPU cache'e ulaşır

Modern GPU'lar, security domain başına partition edilmemiş derin bir cache hierarchy'si (per-SM/CU L1, shared L2) expose eder. WebGPU, web page'lere grafik ve ML workload'ları için general-purpose GPU compute'a (compute shader'lar) portable, low-overhead access vermek üzere tasarlandı. Burada kırılan security boundary, sandboxed, memory-safe bir browser API'sinin physical microarchitectural state'i gözlemleyemeyeceği varsayımıdır.

Paper, WebGPU sandbox'ının içinden bile — native code, pointer veya clflush olmadan — bir attacker'ın şunları yapabileceğini gösterir:

  1. GPU buffer'ları allocate et ve fine-grained performance.now() throttle edildiği için GPU-side timing (atomic'ler / loop-counter timer'lar) kullanarak kendi memory-access latency'lerini ölçen compute shader'lar dispatch et.
  2. Eviction set'ler inşa et: aynı cache set'te çakışan address grupları, öyle ki onlara dokunmak bir victim line'ı evict eder. GPU'nun set-mapping ve slice fonksiyonları belgelenmemiş olduğundan ve vendor/generation'a göre değiştiğinden, set'ler ampirik olarak keşfedilmelidir.
  3. Bu set'leri, co-resident GPU işine (başka bir tab, bir sistem servisi veya bir GPU compute servisi) karşı bir Prime+Probe / Evict+Reload tarzı channel olarak kullan.

Suistimal ettikleri yeni invariant parallelism'dir: eviction-set inşasının kendisi massively parallel bir GPU kernel olarak çalıştırılır, böylece aksi halde yavaş olan group-reduction araması hızlı ve hardware genelinde self-configuring hâle gelir. Bu, saldırıyı generic (11 GPU, 5 generation, 2 vendor) ve automated (per-device tuning yok), yani gerçekten drive-by yapar.

Walkthrough

High-level kavramsal akış (AsiaCCS 2024 paper'ından)

Yalnızca mantıksal adımlar — exploit code yok:

  1. Timer construction. Native high-res timer'lar mevcut değildir, bu yüzden bir compute shader bir counter'ı spin'ler veya bir cache hit'i bir miss'ten ayırt etmeye yetecek çözünürlükte monotonic bir clock türetmek için GPU atomic'lerini kullanır.

  2. Parallel eviction-set discovery. Birçok candidate address üzerinde bir kernel dispatch et. Her GPU thread group, diğer candidate'ları in/out toggle'larken bir target'a access latency'sini ölçer ve candidate pool'unu target line'ı güvenilir şekilde evict eden minimal bir set'e indirir. Reduction GPU genelinde paralel çalışır.

dispatch( find_eviction_set ):
    for each candidate group in parallel:
        measure latency(target)            # GPU-side timer
        if removing group keeps eviction -> drop group
    emit minimal congruent set
  1. Channel operation. Eviction set'ler elde edildikten sonra Prime+Probe çalıştır: set'i prime et, victim'ın çalışmasına izin ver, probe et ve time'la. Yavaşlamış bir probe, victim'ın congruent bir line'a dokunduğu anlamına gelir.

  2. End-to-end demolar.

  3. Inter-keystroke timing: browser/OS'in keystroke'ları handle etmesiyle correlate olan cache aktivitesini gözlemle; NVIDIA'da ~%82-98 F1 score'ları rapor edildi.
  4. GPU AES servisi: GPU tabanlı bir AES encryption servisine karşı generic, set-agnostic bir saldırı, tam bir AES key'i kabaca 6 dakikada recover etti.

Detection

  • Browser/GPU telemetry: grafik gerekçesi olmayan bir page'den anormal WebGPU kullanımı — uzun süren compute-shader dispatch'leri, sıkı self-timing loop'ları, çok sayıda küçük aynı-stride buffer'ın tekrarlı allocation'ı.
  • GPU performance counter'lar (vendor tooling): aksi halde idle dönemlerde bir browser process'inden sürekli, alışılmadık derecede yüksek L2 miss/eviction oranları ve atomic-op throughput'u.
  • Behavioral: sürekli GPU compute tüketen background tab; GPU aktivite spike'larının user input event'leriyle correlation'ı.
  • Spesifik olarak bir EDR signature'ı yoktur; tespit heuristic ve telemetry tabanlıdır.

Mitigation

  • Browser hardening: WebGPU, shipping browser'larda site permission/origin policy'lerinin arkasında gate'lenir; untrusted origin'ler için WebGPU'yu kısıtla veya disable et.
  • Timer coarsening / jitter: GPU-derived timing primitive'lerinin hit/miss'i ayıracak kadar hassas olmasını engelle; browser'lar zaten performance.now()'u throttle eder ve jitter ekler.
  • Site isolation: cross-origin GPU işinin hassas bir victim ile bir process/context paylaşamamasını sağla.
  • Untrusted GPU tenant'ları tarafından erişilebilen servisler için secret-dependent memory access'li GPU crypto'dan kaçın; constant-access implementation'lar kullan.
  • Domain'leri ayırmak için cache partitioning (GPU/driver desteklediği yerde).

References