Branch Privilege Injection (Spectre v2 hardware bypass)¶
Intel'in asynchronous branch-predictor güncellemeleri ile privilege geçişleri arasındaki bir race'i (BPRC) istismar ederek user'da mistrain edilmiş prediction'ları kernel olarak etiketlenmiş şekilde inject et — yedi yıldır "düzeltilmiş" donanımda Spectre-BTI'yi canlandırır. CVE-2024-45332.
Mechanism¶
Neden çalışır
Intel'in Spectre-v2 / branch target injection karşısındaki savunmaları (eIBRS, IBPB), predictor'ın entry'leri onları oluşturan privilege domain'i ile tag'lemesine dayanır; böylece user'da mistrain edilmiş bir prediction kernel'de ateşlenemez.
Kusur: Intel'de branch-predictor güncellemeleri instruction stream'e
asynchronous'tur — çekirdek privilege değiştirirken bir güncelleme hâlâ in
flight olabilir (onlarca ile yüzlerce cycle gecikmeli). Bir prediction user
mode'da hesaplanıp syscall/interrupt geçişinden sonra predictor'a commit
olursa, yeni (kernel) privilege'la yanlış etiketlenir. Bu bir Branch
Predictor Race Condition (BPRC)'dir: güvenlik açısından kritik bir sınır boyunca
predictor ile instruction stream arasında yetersiz senkronizasyon.
Aynı race IBPB barrier'ını da yener: barrier sırasında in flight olan bir güncelleme flush'tan sağ çıkar, böylece sözde geçersiz kılınmış prediction kalıcı olur.
Net etki — Branch Privilege Injection (BPI): privilege'sız bir saldırgan, predictor'ın kernel tarafından yapıldığına inandığı keyfi indirect-branch prediction'ları inject ederek tam cross-privilege Spectre-BTI'yi geri getirir. BPRC'nin üç varyantı vardır: user↔kernel, guest↔hypervisor ve IBPB barrier boyunca ihlal.
Bu, BTB poisoning ve indirect branch predictor mistraining ile aynı makineye binar; yenilik gadget değil, timing race'tir.
Walkthrough¶
COMSEC PoC'si, tamamen mitigate edilmiş Ubuntu 24.04 altında Raptor Cove (13. nesil) üzerinde keyfi kernel belleğini ~5.6 KiB/s hızında sızdırır.
1. Maruziyeti doğrula. BPRC, Intel'i ~9. nesilden (Coffee Lake Refresh) itibaren etkiler; IBPB-bypass varyantı 7. nesle (Kaby Lake) kadar uzanır. AMD ve Arm parçaları incelendi ve etkilenmedikleri raporlandı.
# Is a fixing microcode loaded? (post-fix microcode + kernel bits required)
grep -i 'spectre v2' /sys/devices/system/cpu/vulnerabilities/spectre_v2
dmesg | grep -i microcode
2. Race'i kazan. User mode'da bir indirect branch'i, predictor güncellemesi hâlâ
in flight olacak şekilde train et, ardından hemen kernel'e geç (syscall) ki
güncelleme kernel privilege olarak etiketlenmiş şekilde insin.
user: train indirect branch -> predictor update enqueued (async)
user: syscall -> privilege flips to kernel
core: in-flight update commits ==> prediction now labeled KERNEL
kernel: indirect branch mispredicts to attacker-chosen gadget
3. Bir kernel gadget'ı üzerinden speculate et ve exfiltrate et — bir cache covert channel (bkz. Flush+Reload) aracılığıyla, klasik Spectre-v2 ile aynı disclosure primitive'i.
Raporlanan uçtan uca sonuçlar (COMSEC)
Race timing'i microarch'a özgüdür
Predictor-update enqueue ile commit arasındaki pencere çekirdeğe ve workload'a göre değişir; exploit, güncellemeyi geçiş boyunca in flight tutmak için pipeline'ı (serializing/dispatch baskısı) şekillendirmek zorundadır. Yukarıdaki sayılar yazarlara aittir; başka stepping'lere aktarılacaklarını varsayma.
Detection¶
- Doğru şekilde yamanmış bir sistem
/sys/devices/system/cpu/vulnerabilities/spectre_v2içinde uygun string'i raporlar; düzeltici microcode'un yokluğu maruziyete işaret eder.
Mitigation¶
- Tam mitigation için Intel microcode güncellemesi gerekir (Alder Lake'te raporlanan overhead ~%2.7'ye kadar); yalnızca yazılım tabanlı mitigation'lar nesiller arasında ~%1.6–8.3 olarak ölçüldü. 2025-05-13'e kadar embargo altında açıklandı.
References¶
- S. Wiebing, A. Sanna, K. Razavi et al. Branch Privilege Injection: Compromising Spectre v2 Hardware Mitigations by Exploiting Branch Predictor Race Conditions. USENIX Security 2025 — https://comsec.ethz.ch/wp-content/files/bprc_sec25.pdf
- COMSEC project page — https://comsec.ethz.ch/research/microarch/branch-privilege-injection/
- CVE-2024-45332 — https://ubuntu.com/security/CVE-2024-45332