Skip to content

GPU.zip: On the Side-Channel Implications of Hardware-Based Graphical Data Compression

Kötü niyetli bir web page, GPU'ların transparent, lossless graphical-data compression'ının data-dependent timing'ini gözlemleyerek cross-origin pixel'leri çalar.

Mechanism

Bug class: software-transparent, data-dependent bir optimization bir side channel'a dönüşür

Modern integrated ve discrete GPU'lar, memory bandwidth tasarrufu için framebuffer/texture traffic'ine lossless graphical-data compression uygular. Compression oranı (ve dolayısıyla bir rendering operasyonunun bandwidth'i, DRAM traffic'i ve timing'i) işlenen gerçek pixel value'lara bağlıdır. Kritik olan, bu compression'ın software-transparent olmasıdır: memory subsystem tarafından otomatik olarak uygulanır ve application tarafından disable edilemez, software-visible compression üzerinden leak eden ve kapatılabilen önceki compression channel'larının (örneğin CRIME/HEIST) aksine.

Kırılan security boundary, same-origin policy'dir. Cross-origin content render edip value-dependent bir nicelik (render süresi / channel occupancy) ölçerek, bir attacker başka bir origin'e ait pixel'lerin içeriğini recover eder — attacker'ın asla okumasına izin verilmeyen pixel'ler. İhlal edilen invariant "computation süresi secret data'ya bağlı olmamalıdır"dır: burada render süresi secret pixel'lerin compressibility'sine bağlıdır.

Walkthrough

High-level browser pixel-stealing akışı (kavramsal)

Paper, Chrome'da üç zararsız browser davranışını zincirler:

  1. Victim'ı embed et. Bir target site'a (örneğin logged-in bir page) giden cross-origin bir <iframe>, victim'ın cookie'leriyle yüklenir — attacker onu render edebilir ama okuyamaz.
  2. Tek bir pixel'i amplify et. iframe'e bir SVG filter (örneğin feConvolveMatrix/feComponentTransfer zincirleri) uygulanır, öyle ki bir target pixel'in value'su, büyük ekran region'larının uniform bir renk mi yoksa noisy bir pattern mi olacağını belirler.
  3. Compressibility'yi ölç. Uniform region'lar iyi compress olur (daha az GPU memory traffic'i, daha hızlı), noisy region'lar ise kötü compress olur (daha fazla traffic, daha yavaş). Page, ikisini ayırt etmek için GPU-backed render'ı (örneğin requestAnimationFrame cadence'i ile) time'lar, bir bit, sonra teker teker bir pixel recover eder.

Rapor edilen proof-of-concept sonuçları, bir victim iframe'inde render edilen bir Wikipedia username'ini bir AMD Ryzen iGPU'da ~30 dakikada ~%97 doğrulukla ve bir Intel iGPU'da ~215 dakikada ~%98 ile recover eder. Test edilen tüm GPU'lar (AMD, Apple, Arm, Intel, Qualcomm integrated; bir Nvidia discrete) data-dependent compression sergiledi.

Detection

  • Browser/GPU telemetry: high-frequency requestAnimationFrame timing loop'larıyla, SVG filter'lar altında bir cross-origin iframe'in sürekli, tekrarlı GPU rendering'i — normal bir page için anomalous bir workload.
  • Performance counter'lar: uzun süreler boyunca tek bir tab ile correlate olan GPU memory-bandwidth / compression-engine aktivitesindeki anormal pattern'ler.
  • Heuristic: filtered cross-origin embed'lerin per-frame timing'ini yapan çok uzun ömürlü page'ler; user-visible animation olmadan yüksek CPU/GPU kullanımı.
  • Not: channel timing tabanlı ve stealthy'dir; resource-usage anomalilerinin ötesinde güvenilir bir host log signature'ı yoktur.

Mitigation

Disclosure'da GPU-vendor microarchitectural fix'i yok

Disclosure itibarıyla (Eylül 2023) hiçbir GPU vendor'ı transparent compression'ı disable etmeye veya randomize etmeye taahhüt etmedi ve Google bir browser fix'ine taahhütte bulunmamıştı.

  • Site-side (en pratik): cross-origin embed edilmeyi engelle. X-Frame-Options: DENY / Content-Security-Policy: frame-ancestors 'none' serve et ve hassas cookie'leri SameSite=Strict/Lax olarak ayarla, böylece embedded render'lar credential taşımaz.
  • Browser-side: cross-origin iframe'lerde SVG filter'ları kısıtla; script'e açık timer çözünürlüğünü kabalaştır/sınırla; cross-origin filtered render'ları tainted olarak değerlendir.
  • PoC'de Firefox/Safari neden vulnerable değildi: üç ön koşulu da (credentialed cross-origin iframe + üzerinde SVG filter + GPU-delegated render) aynı anda karşılamadılar.
  • Hardware (uzun vadeli): compression'ı data-oblivious yap ya da security-sensitive surface'ler için bir disable bit expose et.

References