Sepertinya FineIBT sebagai menggabungkan yang terbaik dari Intel’s Control-flow Enforcement Technology dan Control Flow Integrity sebagai implementasi alternatif control flow integrity (CFI) yang disempurnakan dapat siap untuk arus utama dengan siklus Linux 6.2 yang akan datang.
Dukungan FineIBT telah ditambahkan ke cabang x86/core TIP di mana perubahan x86 inti biasanya berada sampai dikirimkan sebagai bagian dari jendela penggabungan siklus kernel berikutnya. Mengingat waktu dan larangan untuk mengangkat masalah apa pun dengan FineIBT, sekarang setelah mencapai TIP x86/core, kemungkinan akan diajukan untuk jendela penggabungan Linux 6.2 pada bulan Desember.
Insinyur Intel mengerjakan kode”Pelacakan Cabang Tidak Langsung yang Baik”ini. Seperti yang dijelaskan dalam tambalan:
Terapkan skema CFI alternatif yang menggabungkan sifat halus kCFI tetapi juga memanfaatkan sepenuhnya CFI perangkat keras berbutir kasar yang disediakan oleh IBT.
Sebaliknya:
kCFI adalah skema CFI perangkat lunak murni dan bergantung pada kemampuan membaca teks–khususnya instruksi *sebelum* simbol target, dan melakukan validasi hash *sebelum* melakukan panggilan (jika tidak, aliran kontrol sudah dikompromikan).
FineIBT adalah skema hibrida perangkat lunak dan perangkat keras; dengan memastikan setiap target cabang dimulai dengan validasi hash, validasi hash dimungkinkan untuk ditempatkan setelah cabang. Ini memiliki beberapa keuntungan:
o beban (hash) dihindari; tidak ada memo; tidak ada persyaratan RX.
o Status IBT WAIT-FOR-ENDBR adalah penghentian spekulasi; dengan menempatkan validasi hash dalam instruksi langsung setelah target cabang ada jendela spekulasi minimal dan keseluruhannya merupakan pertahanan yang layak melawan SpectreBHB.
o Kees merasa berkewajiban untuk menyebutkan bahwa ini sedikit lebih rentan ketika penyerang dapat menulis kode.
Jelas patch ini bergantung pada kCFI, tetapi selain itu juga bergantung pada padding dari patch pelacakan kedalaman panggilan. Ia menggunakan padding ini untuk menempatkan validasi hash sementara situs panggilan ditulis ulang untuk mengubah target tidak langsung menjadi 16 byte di depan target asli, sehingga mengenai pembukaan baru ini.
Terutama, tidak ada perangkat keras yang memerlukan pelacakan kedalaman panggilan (Skylake) dan mendukung IBT (Tigerlake dan seterusnya).
Opsi konfigurasi untuk fitur kernel ini berada di bawah”FINEIBT”.