Skip to content

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)
target:   up-to-date Linux, default mitigations ON
CPUs:     six generations of Intel (Coffee Lake R .. Raptor Lake)
leak:     arbitrary kernel memory @ ~5.6 KiB/s on Raptor Cove
barrier:  IBPB-bypass variant defeats the IBPB flush

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_v2 iç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