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:
- 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. - 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. - 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
requestAnimationFramecadence'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
requestAnimationFrametiming 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'leriSameSite=Strict/Laxolarak 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.