Wygląda jak FineIBT jako połączenie najlepszych technologii Control-flow Enforcement Technology i Control Flow Integrity w udoskonaloną, alternatywną implementację CFI może być gotowe do wprowadzenia na rynek główny wraz z nadchodzącym cyklem Linuksa 6.2.
Obsługa FineIBT została dodana do gałęzi TIP x86/core, w której zmiany rdzenia x86 zwykle pozostają do momentu przesłania ich jako części okna scalania następnego cyklu jądra. Biorąc pod uwagę czas i wykluczenie jakichkolwiek problemów z zgłaszaniem problemów z FineIBT, teraz, gdy osiągnął on TIP x86/core, prawdopodobnie zostanie zgłoszony do okna scalania Linuksa 6.2 w grudniu.
Inżynierowie firmy Intel pracowali nad tym kodem „Fine Indirect Branch Tracking”. Jak wyjaśniono w poprawce:
Zaimplementuj alternatywny schemat CFI, który łączy zarówno drobnoziarnistą naturę kCFI, ale także w pełni wykorzystuje gruboziarnisty sprzętowy CFI zapewniany przez IBT.
Dla kontrastu:
kCFI jest czysto programowym schematem CFI i opiera się na możliwości odczytywania tekstu – w szczególności instrukcji *przed* symbolem docelowym i walidacji skrótu *przed* wykonaniem wywołanie (w przeciwnym razie przepływ sterowania jest już zagrożony).
FineIBT to schemat hybrydowy oprogramowania i sprzętu; zapewniając, że każdy cel oddziału zaczyna się od walidacji skrótu, możliwe jest umieszczenie walidacji skrótu po gałęzi. Ma to kilka zalet:
o unika się obciążenia (haszowania); bez notatki; brak wymogu RX.
o Stan IBT CZEKAJ NA ENDBR jest zatrzymaniem spekulacji; umieszczając walidację skrótu w instrukcji bezpośredniej po docelowym gałęzi, powstaje minimalne okno spekulacji, a całość stanowi realną ochronę przed SpectreBHB.
o Kees czuje się zobowiązany wspomnieć, że jest nieco bardziej podatny na ataki, gdy atakujący może napisać kod.
Oczywiście ta poprawka opiera się na kCFI, ale dodatkowo opiera się również na dopełnieniu z łatek śledzenia głębokości połączeń. Używa tego dopełnienia, aby umieścić walidację hash, podczas gdy strony wywołania są ponownie zapisywane, aby zmodyfikować cel pośredni tak, aby znajdował się 16 bajtów przed pierwotnym celem, tym samym trafiając w tę nową preambułę.
Warto zauważyć, że nie ma sprzętu, który wymaga śledzenia głębi połączeń (Skylake) i obsługuje IBT (Tigerlake i nowsze).
Opcja konfiguracji dla tej funkcji jądra jest w kategorii „FINEIBT”.