Skip to content

Enhanced IBRS

Intel'in "set once" hardware Spectre v2 mitigation'ı (IBRS_ALL): boot'ta bir kez IA32_SPEC_CTRL.IBRS=1 set 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.

References