Nhân Linux kể từ năm ngoái đã để lại nhầm lẫn các hệ thống dựa trên Suy đoán hạn chế nhánh gián tiếp (IBRS) ban đầu để giảm thiểu Spectre V2 mà không có phạm vi bảo hiểm của Bộ dự đoán nhánh gián tiếp theo luồng đơn (STIBP) để xử lý lỗ hổng Spectre xuyên HyperThread với lỗ hổng Spectre này. Hiện có một bản vá đang giải quyết vấn đề này cho các hệ thống thời đại Intel Skylake.

Kể từ khi một thay đổi được hợp nhất vào tháng 6 năm ngoái và được áp dụng chính trong Linux 5.19-rc2, không có hỗ trợ STIBP khi IBRS (bản gốc, đừng nhầm lẫn với Intel eIBRS) được kích hoạt. Bản vá khắc phục sự cố này giải thích:

“Khi bật IBRS đơn giản (không phải IBRS nâng cao), logic trong spectre_v2_user_select_mitigation() xác định rằng STIBP là không cần thiết.

Bit IBRS bảo vệ hoàn toàn chống lại việc tiêm mục tiêu nhánh chéo luồng. Tuy nhiên, với IBRS kế thừa, bit IBRS sẽ bị xóa khi quay lại vùng người dùng vì lý do hiệu suất khiến các luồng vùng người dùng dễ bị tiêm mục tiêu nhánh luồng chéo mà STIBP bảo vệ.

Loại trừ IBRS khỏi kiểm tra spectre_v2_in_ibrs_mode() để cho phép bật STIBP (thông qua seccomp/prctl() theo mặc định hoặc luôn bật, nếu được chọn bởi tham số cmdline kernel spectre_v2_user).”

Vì vậy, để bảo vệ chuỗi không gian người dùng bằng STIBP, bản vá này của kỹ sư Google KP Singh thuộc r eview để cho phép kích hoạt STIBP với IBRS”cũ”. Một lần nữa, điều này chỉ ảnh hưởng đến các bộ xử lý cũ dựa trên IBRS đơn giản giống như các bộ xử lý từ các thiết kế có nguồn gốc từ Skylake/Skylake. Bản vá đã được đánh dấu để chuyển ngược sang dòng nhân Linux ổn định cũng như sau khi được định tuyến chính.
Đối với những người sử dụng hệ thống IBRS đơn giản, với Linux 6.2 cũng có tính năng Theo dõi độ sâu cuộc gọi mới ít tốn kém hơn IBRS để giảm thiểu Spectre V2. Tuy nhiên, chi phí hiệu suất tích lũy cho tất cả các biện pháp giảm thiểu khác nhau này, đặc biệt là trên các hệ thống thời Skylake cũ hơn vẫn còn khá cao.

Categories: IT Info