Skip to content

InSpectre Gadget / Native BHI (CVE-2024-2201)

Native (eBPF'siz) Branch History Injection: kernel kodunda zaten mevcut disclosure gadget'larını kullanarak Linux kernel'ine karşı cross-privilege Spectre-v2 sür; "unprivileged eBPF'i devre dışı bırak" mitigation'ını çökert ve (Fine)IBT'den sağ çık.

Mechanism

Note

Branch History Injection (bkz. ./branch-history-injection.md) global Branch History Buffer'ı user mode'dan poison'lar; böylece bir syscall'dan sonra bir kernel indirect branch'i attacker'ın seçtiği bir target'a mispredict eder. Orijinal 2022 PoC'si, kernel address space'ine kullanışlı bir disclosure gadget yerleştirmek için unprivileged eBPF'e dayanıyordu, bu yüzden vendor'lar unprivileged eBPF'i devre dışı bırakarak mitigate etti. Native BHI bu koltuk değneğini kaldırır: suistimal ettiği invariant, kernel image'ının kendisinin zaten, history-poison'lanmış indirect branch'ler üzerinden erişilebilen speculative disclosure gadget'ları içerdiğidir. Mispredict edilen target'lar legitimate kernel kodu olduğu ve yalnızca history attacker tarafından şekillendirildiği için, hardware Spectre-v2 mitigation'ları (eIBRS) BHB'yi user→kernel sınırı boyunca izole etmez ve eBPF'i kaldırmak yapısal olarak hiçbir şey kaldırmaz. Eşlik eden araç InSpectre Gadget, sadece pattern-matching yerine candidate gadget'ların exploitability'si hakkında akıl yürütmek için symbolic execution kullanır — constraint'leri, attacker-controlled değerleri ve leak channel'ını modelleyip gerçekten kullanılabilir gadget'ları gün yüzüne çıkarır.

Walkthrough

VUSec proje sayfasından ve USENIX Security 2024 paper'ından üst düzey.

  1. Kernel'i kullanılabilir gadget'lar için tara. InSpectre Gadget, indirect branch'lerden erişilebilen kernel kodunu symbolic olarak analiz eder ve fragment'ları, attacker'ın speculatif olarak yüklenen adresi kontrol edip sonucu gözlemleyip gözlemleyemeyeceğine göre sınıflandırır. Linux 6.6-rc4'te yazarlar yaklaşık ~1.500 exploitable gadget artı ~2.100 dispatch gadget raporlar.

  2. Branch history'yi şekillendir, sonra kernel'e gir. Klasik BHI'daki gibi, crafted bir user-mode branch dizisi BHB'yi, kernel içinde bir victim indirect branch'i seçilmiş bir disclosure gadget'a yönlendiren state'e iter — eBPF programı gerekmez.

user: shape global branch history  ->  syscall  ->  kernel indirect branch
      mispredicts into a *native* kernel disclosure gadget (transient)
  1. Transient leak + decode. Native gadget, attacker'ın etkilediği kernel memory'yi transient olarak yükler ve ./flush-reload.md gibi bir kaplama channel'ıyla recover edilen bir microarchitectural footprint (cache state) bırakır.
Raporlanan sonuçlar (VUSec / USENIX Sec '24)
Class:     Native BHI (cross-privilege Spectre-v2 / Spectre-BHB)
CVE:       CVE-2024-2201
Bypasses:  "disable unprivileged eBPF" mitigation; survives (Fine)IBT
Leak rate: ~3.5 kB/s of arbitrary kernel memory (demo)
Affected:  Intel systems already susceptible to BHI; advisories from
           Intel, Red Hat, SUSE, Xen, Illumos, Triton

Warning

Yazarlar, FineIBT'nin speculation window'unu daralttığını ama tamamen kapatmadığını belirtir — contention altında window, keşfedilen birçok gadget'a ulaşacak kadar genişler, dolayısıyla CFI tarzı indirect-branch sertleştirmesi tek başına burada eksiksiz bir savunma değildir.

Detection

  • Bu bir microarchitectural transient-execution attack'idir: syscall trace'lerde architectural bir artifact yoktur, dolayısıyla signature tabanlı EDR leak'in kendisini görmez.
  • Proxy davranışları izle: high-resolution timing ile eşleşen sıkı syscall loop'ları yapan ve bir covert channel'a özgü cache-eviction desenleri taşıyan process'ler (bkz. ./flush-reload.md, ./prime-probe.md).
  • Envanter maruziyeti: /sys/devices/system/cpu/vulnerabilities/spectre_v2'yi kontrol et ve platform'un BHI'a özgü mitigation durumunu raporlayıp raporlamadığını teyit et; tek başına bir "eBPF disabled" durumu native BHI'a karşı yeterli değildir.
  • Anomalous HPC sinyalleri (güvenilmeyen bir process'te cache-miss patlamalarıyla korele yükselmiş branch misprediction'lar) kaba bir hunting heuristic'i olabilir.

Mitigation

  • CVE-2024-2201'i ele alan vendor kernel güncellemelerini uygula; platform'un için ilgili Intel, Red Hat, SUSE ve Xen advisory'lerini takip et.
  • CPU'ya uygun BHI hardware/software mitigation'ını etkinleştir (örn. kernel'in BHI clearing dizisi / mevcut olduğunda BHI_DIS_S); BHI savunması olarak "unprivileged eBPF disabled"a güvenme.
  • (Fine)IBT'yi defense-in-depth olarak etkin tut, ama bu sınıfa karşı eksik olduğunu anla.
  • Hassas kernel'ler/hypervisor'lar için, indirect-branch sertleştirmesini CPU'nun privilege geçişlerinde branch-history clearing'iyle birleştir.

References