Indirect Target Selection mitigation¶
ITS (CVE-2024-28956, INTEL-SA-01153), bir cacheline'ın alt yarısındaki instruction'lara ait indirect-branch/RET tahminlerinin farklı bir branch'ten seçilebildiği, 2025'te açıklanan bir Intel branch-predictor kusurudur; kernel bunu aligned thunk'lar, retpoline'lar, RSB stuffing ve güncellenmiş microcode ile mitige eder.
Mechanism¶
Note
Bug'ın bozduğu şey: predictor eksik target/IP bit'leri üzerinden indeks
aldığı için, instruction'ı bir cacheline'ın alt yarısında duran bir
indirect branch'in (veya RET'in) tahmini farklı bir branch'ten seçilebilir.
Bu, bir attacker'ın hardware Spectre-v2 mitigation'larına sahip parçalarda
bile sınırlar arası gadget'lara ulaşmasını sağlar. Intel/kernel belgelerine
göre üç şeyi etkiler: eIBRS altında guest/host isolation, kernel içi training
yoluyla intra-mode BTI ve IBPB'nin etkinliği.
Mitigation'ın geri yüklediği invariant: zafiyetli indirect branch'ler ve
RET'ler yanlış seçilemeyecek şekilde yeniden konumlandırılır — kernel onları
bu tahminden güvenli cacheline pozisyonlarına taşır.
ITS, CVE-2024-28956'dır (CVSS 4.7, Medium); VU Amsterdam (VUSec) tarafından yürütülen "Training Solo" araştırmasının bir parçası olarak Mayıs 2025'te açıklandı. Debian tracker'a göre:
Exposure of Sensitive Information in Shared Microarchitectural Structures during Transient Execution for some Intel(R) Processors may allow an authenticated user to potentially enable information disclosure via local access.
Etkilenen: 9.–11. nesil Intel Core ve 2.–3. nesil Intel Xeon Scalable
(Cascade Lake'den Ice Lake'e), Enhanced IBRS destekleyen parçalar; 12. nesil Core
ve 4. nesil Xeon (Alder Lake / Sapphire Rapids) gibi BHI_CTRL'e sahip daha yeni
CPU'lar bu aralığa dahil değildir. Intel Atom çekirdekleri etkilenmez.
Walkthrough¶
Kernel üç savunma uygular (ITS admin-guide belgesinden):
- Aligned thunks — indirect branch'leri ve
RET'leri güvenli cacheline pozisyonlarına yeniden konumlandırır. - Retpoline — retpoline etkinken thunk'lar yalnızca zafiyetli
RET'lere uygulanır, çünkü retpoline indirect branch'leri zaten korur. - RSB stuffing — call depth tracking /
RSB stuffing, ITS'e karşı zafiyetli
RET'leri kapsar.
Read the new vulnerabilities entry
$ cat /sys/devices/system/cpu/vulnerabilities/indirect_target_selection
Mitigation: Aligned branch/return thunks
Raporlanan diğer değerler arasında Not affected, Vulnerable ve
Mitigation: Retpolines, Stuffing RSB bulunur.
Kernel command line parametresiyle kontrol et:
indirect_target_selection=on # default
indirect_target_selection=off
indirect_target_selection=vmexit # mitigate only the guest->host (VMEXIT) case
indirect_target_selection=stuff # use RSB stuffing
indirect_target_selection=force # force mitigation even if not enumerated
Warning
Tam mitigation, kernel değişikliklerine ek olarak güncellenmiş microcode gerektirir; Intel'in tavsiyesi, firmware/microcode güncellemesini sistem üreticisinden uygulamaktır. Kernel'in thunk/RSB stratejileri bunun üzerine katmanlanır.
Detection¶
Özel sysfs node'u
/sys/devices/system/cpu/vulnerabilities/indirect_target_selection,
affected/mitigation durumunu raporlar; oradaki Vulnerable, eksik microcode'a
veya devre dışı bir mitigation'a işaret eder.
Mitigation¶
ITS, Spectre-v2 ailesinin geri kalanıyla yakından ilişkilidir: IBPB, (enhanced) IBRS, retpoline, Retbleed return thunk'ları ve RSB stuffing — hepsi mevcut microcode mitigations ile koşullanır.