Enhanced IBRS¶
Intel'in "set once" hardware Spectre v2 mitigation'ı (IBRS_ALL): boot'ta bir kez
IA32_SPEC_CTRL.IBRS=1set et, CPU indirect-branch prediction'ı privilege seviyeleri arasında hardware'de kısıtlasın.
Mechanism¶
Note
Legacy IBRS, OS'in daha-privileged bir predictor mode'una her geçişte
IA32_SPEC_CTRL.IBRS'e WRMSR yapmasını (ve dönüşte temizlemesini) gerektirir,
bu pahalıdır. Enhanced IBRS sistemleri, IBRS bit'ini set ederek IBRS korumasını
boot'ta bir kez etkinleştirir; branch-predictor entry'leri o noktadan sonra
privilege mode'ları arasında hardware tarafından izole edilir, böylece user-mode
code kernel indirect-branch target'larını poison edemez. Intel eIBRS parçalarında
bu cross-thread (SMT) injection'ı da kapsar ve örtük olarak STIBP sağlar. Yetenek
IA32_ARCH_CAPABILITIES[IBRS_ALL] bit'i üzerinden enumerate edilir.
Belgelenmiş bir sınırlama: eIBRS ile bile Branch History Buffer (BHB) mode'lar arasında
izole edilmez, bu da BHI_DIS_S gerektiren Branch History Injection (BHI) maruziyetini bırakır.
Walkthrough¶
Tespit koşulları (CHIPSEC'in spectre_v2 modülüne göre):
CPUID.(EAX=7H,ECX=0):EDX[29] == 1 -> IA32_ARCH_CAPABILITIES present
IA32_ARCH_CAPABILITIES[IBRS_ALL] == 1 -> CPU supports enhanced IBRS
IA32_SPEC_CTRL[IBRS] == 1 -> OS has activated it
Linux'ta mitigation durumu
/sys/devices/system/cpu/vulnerabilities/spectre_v2'dedir:
$ cat /sys/devices/system/cpu/vulnerabilities/spectre_v2
Mitigation: Enhanced IBRS, IBPB: conditional, RSB filling
(legacy için Mitigation: IBRS'e karşılık.)
Detection¶
sysfs spectre_v2 node'u Enhanced IBRS'i legacy IBRS'ten ayırır; kernel, eIBRS
parçalarında "ibrs" manuel seçildiğinde (gereksiz olduğu için) uyarı verir.
Mitigation¶
eIBRS izolasyonunun daha sonra Retbleed'e (bazı eIBRS Intel parçalarında return-based Spectre-BTI) ve BHI'ye (BHB mode-isolated değil) karşı yetersiz olduğu gösterildi. Doğrulanmış kernel-doc notu:
although branch predictor entries are isolated between modes when eIBRS is enabled, the BHB itself is not isolated between modes
bu da BHI_DIS_S ya da software BHB-clearing gerektirir.
IBRS ve
retpoline ile karşılaştır.