Một lỗ hổng khác đã được xác định trong bộ xử lý AMD cho phép tấn công Meltdown

Một nhóm các nhà nghiên cứu từ Đại học Kỹ thuật Graz (Áo) và Trung tâm Bảo mật Thông tin Helmholtz (CISPA) đã tiết lộ thông tin về lỗ hổng (CVE-2021-26318) trong tất cả các bộ xử lý AMD có thể thực hiện lỗ hổng Meltdown-class. các cuộc tấn công kênh bên (ban đầu người ta cho rằng bộ xử lý AMD không bị ảnh hưởng bởi lỗ hổng Meltdown). Trong thực tế, cuộc tấn công có thể được sử dụng để thiết lập các kênh liên lạc bí mật, giám sát hoạt động trong kernel hoặc lấy thông tin về địa chỉ trong bộ nhớ kernel để vượt qua lớp bảo vệ KASLR trong khi khai thác các lỗ hổng trong kernel.

AMD cho rằng việc thực hiện các biện pháp đặc biệt để ngăn chặn sự cố là không phù hợp, vì lỗ hổng này, giống như một cuộc tấn công tương tự được phát hiện vào tháng XNUMX, ít được sử dụng trong điều kiện thực tế, bị giới hạn bởi ranh giới hiện tại của không gian địa chỉ quy trình và yêu cầu sự hiện diện của một số địa chỉ nhất định. chuỗi hướng dẫn (tiện ích) được tạo sẵn trong kernel. Để chứng minh cuộc tấn công, các nhà nghiên cứu đã tải mô-đun hạt nhân của riêng họ bằng một tiện ích được thêm vào một cách giả tạo. Trong điều kiện thực tế, kẻ tấn công có thể sử dụng các lỗ hổng thường xuyên xuất hiện trong hệ thống con eBPF để thay thế các chuỗi cần thiết.

Để bảo vệ khỏi kiểu tấn công mới này, AMD khuyến nghị sử dụng các kỹ thuật mã hóa an toàn giúp chặn các cuộc tấn công Meltdown, chẳng hạn như sử dụng hướng dẫn LFENCE. Các nhà nghiên cứu đã xác định được vấn đề khuyên bạn nên kích hoạt tính năng cách ly bảng trang bộ nhớ (KPTI) chặt chẽ hơn, tính năng này trước đây chỉ được sử dụng cho bộ xử lý Intel.

Trong quá trình thử nghiệm, các nhà nghiên cứu đã tìm cách rò rỉ thông tin từ nhân đến một tiến trình trong không gian người dùng với tốc độ 52 byte mỗi giây, nhờ sự hiện diện của một tiện ích trong nhân thực hiện thao tác “if (offset < data_len) tmp = LUT[dữ liệu[offset] * 4096];” . Một số phương pháp đã được đề xuất để truy xuất thông tin qua các kênh bên được lưu vào bộ nhớ đệm trong quá trình thực hiện suy đoán. Phương pháp đầu tiên dựa trên việc phân tích độ lệch trong thời gian thực hiện của lệnh bộ xử lý “PREFETCH” (Tìm nạp trước+Thời gian) và phương pháp thứ hai dựa trên việc thay đổi sự thay đổi về mức tiêu thụ năng lượng khi thực hiện “PREFETCH” (Tìm nạp trước+Nguồn).

Hãy nhớ lại rằng lỗ hổng Meltdown cổ điển dựa trên thực tế là trong quá trình thực hiện các hướng dẫn mang tính suy đoán, bộ xử lý có thể truy cập vào vùng dữ liệu riêng tư và sau đó loại bỏ kết quả, vì các đặc quyền đã đặt cấm quyền truy cập đó từ quy trình người dùng. Trong chương trình, khối được thực thi suy đoán được tách khỏi mã chính bằng một nhánh có điều kiện, trong điều kiện thực tế luôn kích hoạt, nhưng do thực tế là câu lệnh điều kiện sử dụng một giá trị được tính toán mà bộ xử lý không biết trong quá trình thực thi ưu tiên của mã, tất cả các tùy chọn nhánh được thực hiện mang tính suy đoán.

Do các hoạt động được thực hiện theo suy đoán sử dụng cùng một bộ đệm như các lệnh được thực hiện thông thường, nên trong quá trình thực thi suy đoán có thể đặt các điểm đánh dấu trong bộ đệm phản ánh nội dung của các bit riêng lẻ trong vùng bộ nhớ riêng, sau đó trong mã được thực thi thông thường để xác định giá trị của chúng thông qua thời gian. phân tích truy cập vào dữ liệu được lưu trong bộ nhớ đệm và không được lưu trong bộ nhớ đệm.

Nguồn: opennet.ru

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