Post-Barrier Spectre (IBPB bypass)¶
Return predictor'ı bir Indirect Branch Prediction Barrier'dan (IBPB) önce mistrain ederek, poison'lanmış prediction'ların barrier'dan sağ çıkıp sonrasında speculation'ı hijack etmesini sağlamak.
Mechanism¶
Note
IBPB'nin (Indirect Branch Prediction Barrier) amacı, security boundary'leri arasında branch prediction state'inin hard reset'i olmaktır: yazıldıktan sonra bir önceki context tarafından train edilen prediction'lar artık yenisini etkilememelidir. Post-Barrier Spectre, etkilenen CPU'larda bu barrier'ın eksik olduğunu gösteriyor: belirli predictor state'i — özellikle return predictor / Return Stack Buffer entry'leri — IBPB boyunca korunuyor. Barrier'dan hemen önce return predictor'ı mistrain eden bir attacker, victim'in return'lerinin IBPB'den sonra tükettiği poison'lanmış bir entry bırakır ve sözde reset'e rağmen speculation'ı attacker'ın seçtiği bir gadget'a yönlendirir.
Wikner ve arkadaşları tarafından açıklandı (ETH Zurich, "Breaking the Barrier: Post-Barrier Spectre Attacks", IEEE S&P 2025). Intel'de (CVE-2023-38575) bir implementation sorunu return prediction'ların kalıcı olmasına izin verdi; AMD Zen 1(+)/2'de (IBPB/RSB etkileşimi olarak izlenir, AMD-SB-1040) bir "PB-Inception" varyantı, unprivileged bir attacker'a arbitrary kernel memory sızdırmak için IBPB'den sonra speculative return target'ları hijack eder. Bu, özellikle cross-domain Spectre v2'yi durdurmak için deploy edilmiş bir savunmayı alt eder.
Walkthrough¶
Saldırının zaman çizelgesi, mistraining'i barrier'dan önce yapmak üzerine kuruludur:
t0 Attacker context: mistrain the return predictor toward gadget G
(e.g. via crafted call/return sequences).
t1 Privilege transition issues IBPB -> expected to wipe predictor state.
t2 Victim context executes a RET; the retained poisoned entry fires,
speculatively redirecting to G.
t3 G performs a secret-dependent load; leak via Flush+Reload cache channel.
Linux'ta mitigation yüzeyini kontrol etmek:
# RSB / IBPB related mitigation reporting
cat /sys/devices/system/cpu/vulnerabilities/spectre_v2
# look for "IBPB: conditional/always" and RSB filling state
# Kernel documents the RSB-related interactions here:
# https://docs.kernel.org/admin-guide/hw-vuln/rsb.html
Bir target'ta doğrulanacak temel içgörü, o microarchitecture'daki IBPB'nin return predictor'ı temizleyip temizlemediğidir; temizlemediği yerde, microcode + RSB-filling software fix'leri uygulanana kadar pre-barrier return mistraining exploit edilebilir kalır.
Detection¶
Transient, architectural bir imza yok. Savunucular microcode versiyonlarını ve
spectre_v2 / RSB mitigation durumunu, ayrıca generic cache-channel anomaly
detection'ını takip eder.
Mitigation¶
- CVE-2023-38575 için Intel microcode'unu ve AMD rehberliğini (AMD-SB-1040) uygulayın; bunlar, context switch'te RSB filling/stuffing ile birleştiğinde return prediction'ların barrier'dan sağ çıkmamasını sağlar.
- Unpatched AMD Zen 1(+)/2'de, IBPB'den sonra software RSB filling PB-Inception yolunu kapatır.
References¶
- Breaking the Barrier: Post-Barrier Spectre Attacks (ETH Zurich, IEEE S&P 2025, PDF)
- Intel: Non-transparent sharing of return predictor targets between contexts (CVE-2023-38575 / INTEL-SA-00982) — bu belgenin konusu
- Intel: Post-barrier Return Stack Buffer Predictions (CVE-2022-26373 / INTEL-SA-00706) — ayrı ama ilişkili bir PBRSB/eIBRS sorunu
- AMD-SB-1040: IBPB and Return Stack Buffer Interactions
- Linux kernel RSB-related mitigations