FineIBT может быть готов для Linux 6.2

Похоже, что FineIBT, сочетающая в себе лучшее из технологии Intel Control-flow Enforcement Technology и Control Flow Integrity, поскольку усовершенствованная альтернативная реализация целостности потока управления (CFI) может быть готова для основной линии с предстоящим циклом Linux 6.2.

Поддержка FineIBT была добавлена в ветку TIP x86/core, где изменения ядра x86 обычно находятся до тех пор, пока они не будут отправлены как часть окна слияния следующего цикла ядра. Учитывая время и отсутствие каких-либо проблем с FineIBT, теперь, когда он достиг TIP x86/core, он, вероятно, будет представлен для окна слияния Linux 6.2 в декабре.

Над этим кодом «Fine Indirect Branch Tracking» работали инженеры Intel. Как поясняется в патче:
Реализуйте альтернативную схему CFI, которая сочетает в себе детализированную природу kCFI, а также в полной мере использует крупнозернистый аппаратный CFI, предоставляемый IBT.

Контрастировать:

kCFI — это чисто программная схема CFI, основанная на возможности чтения текста, в частности инструкции *перед* целевым символом, и проверка хэша *перед* выполнением вызова (в противном случае поток управления уже скомпрометирован).

FineIBT представляет собой программно-аппаратную гибридную схему; гарантируя, что каждая цель ветки начинается с проверки хэша, можно разместить проверку хэша после ветки. Это имеет несколько преимуществ:

o нагрузка (хэш) исключена; нет памятки; нет требования RX.

o Состояние IBT WAIT-FOR-ENDBR означает остановку спекуляции; помещая проверку хеш-функции в непосредственную инструкцию после цели перехода, мы получаем минимальное окно для спекуляций, и в целом это является жизнеспособной защитой от SpectreBHB.

o Кес чувствует себя обязанным упомянуть, что он немного более уязвим, когда злоумышленник может писать код.

Очевидно, что этот патч основан на kCFI, но, кроме того, он также зависит от заполнения из патчей отслеживания глубины вызовов. Он использует это заполнение для размещения проверки хэша, в то время как сайты вызовов переписываются, чтобы изменить косвенную цель так, чтобы она находилась на 16 байтов впереди исходной цели, таким образом попадая в эту новую преамбулу.

Примечательно, что нет оборудования, которое требует отслеживания глубины вызовов (Skylake) и поддерживает IBT (Tigerlake и новее).

Параметр конфигурации для этой функции ядра находится в разделе «FINEIBT».

Поделиться:

Похожие публикации

Тут ничего нет

Нет комментариев