Có vẻ như FineIBT là kết hợp công nghệ thực thi luồng điều khiển tốt nhất của Intel và tính toàn vẹn luồng điều khiển để triển khai tính toàn vẹn luồng điều khiển (CFI) nâng cao, thay thế có thể sẵn sàng cho mainline với chu kỳ Linux 6.2 sắp tới.

Hỗ trợ FineIBT đã được thêm vào nhánh x86/lõi của TIP nơi các thay đổi x86 lõi thường nằm cho đến khi được gửi như một phần của cửa sổ hợp nhất của chu kỳ hạt nhân tiếp theo. Với thời gian và ngăn chặn bất kỳ vấn đề nào được nêu ra với FineIBT, bây giờ khi nó đã đạt đến TIP x86/core, nó có khả năng sẽ được gửi cho cửa sổ hợp nhất Linux 6.2 vào tháng 12.

Các kỹ sư của Intel đã làm việc trên mã”Theo dõi chi nhánh gián tiếp tốt”này. Như đã giải thích trong bản vá :

Triển khai một lược đồ CFI thay thế kết hợp cả bản chất chi tiết của kCFI nhưng cũng tận dụng tối đa lợi thế của CFI phần cứng dạng hạt thô do IBT cung cấp.

Ngược lại:

kCFI là một lược đồ CFI phần mềm thuần túy và dựa vào khả năng đọc văn bản-cụ thể là hướng dẫn * trước * biểu tượng đích và thực hiện xác thực băm * trước khi * thực hiện cuộc gọi (nếu không thì luồng điều khiển đã bị xâm phạm).

FineIBT là một chương trình kết hợp giữa phần mềm và phần cứng; bằng cách đảm bảo mọi mục tiêu nhánh đều bắt đầu bằng xác thực băm, có thể đặt xác nhận băm sau nhánh. Điều này có một số ưu điểm:

o tránh được tải (băm); không có bản ghi nhớ; không yêu cầu RX.

o Trạng thái IBT WAIT-FOR-ENDBR là điểm dừng đầu cơ; bằng cách đặt xác nhận băm trong lệnh ngay sau mục tiêu nhánh sẽ có một cửa sổ đầu cơ tối thiểu và toàn bộ là một biện pháp phòng thủ khả thi chống lại SpectreBHB.

o Kees cảm thấy có trách nhiệm phải đề cập rằng nó dễ bị tấn công hơn một chút khi kẻ tấn công có thể viết mã.

Rõ ràng là bản vá này dựa trên kCFI, nhưng ngoài ra, nó cũng dựa vào phần đệm từ các bản vá theo dõi độ sâu cuộc gọi. Nó sử dụng phần đệm này để đặt xác thực băm trong khi các trang web gọi được viết lại để sửa đổi mục tiêu gián tiếp thành 16 byte trước mục tiêu ban đầu, do đó đạt được phần mở đầu mới này.

Đáng chú ý, không có phần cứng nào cần theo dõi độ sâu cuộc gọi (Skylake) và hỗ trợ IBT (Tigerlake trở đi).

Tùy chọn cấu hình cho tính năng hạt nhân này nằm trong”FINEIBT”.

Categories: IT Info