Lỗ hổng trong cơ chế thực thi lệnh suy đoán của bộ xử lý AMD

Dự án Grsecurity đã công bố thông tin chi tiết và trình diễn phương pháp tấn công đối với lỗ hổng mới (CVE-2021-26341) trong bộ xử lý AMD liên quan đến việc thực thi các lệnh suy đoán sau các hoạt động chuyển tiếp vô điều kiện. Nếu cuộc tấn công thành công, lỗ hổng này cho phép xác định nội dung của các vùng bộ nhớ tùy ý. Ví dụ: các nhà nghiên cứu đã chuẩn bị một cách khai thác cho phép họ xác định bố cục địa chỉ và vượt qua cơ chế bảo vệ KASLR (ngẫu nhiên hóa bộ nhớ hạt nhân) bằng cách thực thi mã không có đặc quyền trong hệ thống con hạt nhân ePBF. Không thể loại trừ các tình huống tấn công khác có thể dẫn đến rò rỉ nội dung bộ nhớ kernel.

Lỗ hổng này cho phép bạn tạo các điều kiện trong đó bộ xử lý, trong quá trình thực thi ưu tiên, xử lý một cách suy đoán lệnh ngay sau lệnh nhảy trong bộ nhớ (SLS, Suy đoán đường thẳng). Hơn nữa, việc tối ưu hóa như vậy không chỉ hoạt động đối với các toán tử nhảy có điều kiện mà còn đối với các lệnh ngụ ý nhảy trực tiếp vô điều kiện, chẳng hạn như JMP, RET và CALL. Theo hướng dẫn nhảy vô điều kiện, dữ liệu tùy ý không nhằm mục đích thực thi có thể được đặt. Sau khi xác định rằng một nhánh không liên quan đến việc thực hiện lệnh tiếp theo, bộ xử lý chỉ cần khôi phục trạng thái và bỏ qua việc thực hiện suy đoán, nhưng dấu vết thực hiện lệnh vẫn còn trong bộ đệm chung và có sẵn để phân tích bằng kỹ thuật truy xuất kênh bên.

Giống như việc khai thác lỗ hổng Spectre-v1, cuộc tấn công yêu cầu sự hiện diện của một số chuỗi hướng dẫn (tiện ích) nhất định trong kernel dẫn đến thực thi suy đoán. Việc chặn một lỗ hổng trong trường hợp này liên quan đến việc xác định các tiện ích đó trong mã và thêm các hướng dẫn bổ sung vào chúng để chặn việc thực thi suy đoán. Các điều kiện để thực thi suy đoán cũng có thể được tạo bởi các chương trình không có đặc quyền đang chạy trong máy ảo eBPF. Để chặn khả năng xây dựng các tiện ích bằng eBPF, bạn nên tắt quyền truy cập không có đặc quyền vào eBPF trong hệ thống (“sysctl -w kernel.unprivileged_bpf_disabled=1”).

Lỗ hổng này ảnh hưởng đến các bộ xử lý dựa trên vi kiến ​​trúc Zen1 và Zen2, bao gồm thế hệ thứ nhất và thứ hai của bộ xử lý AMD EPYC và AMD Ryzen Threadripper, cũng như AMD Ryzen 2000/3000/4000/5000, AMD Athlon, AMD Athlon X, AMD Ryzen Threadripper. Bộ xử lý dòng PRO và APU A. Để chặn việc thực thi các lệnh suy đoán, nên gọi các lệnh INT3 hoặc LFENCE sau các thao tác nhánh (RET, JMP, CALL).

Nguồn: opennet.ru

Thêm một lời nhận xét