Cuộc tấn công mới vào cấu trúc vi kiến ​​trúc của bộ xử lý Intel và AMD

Một nhóm các nhà nghiên cứu từ Đại học Virginia và Đại học California đã trình bày một kiểu tấn công mới vào cấu trúc vi kiến ​​trúc của bộ xử lý Intel và AMD, được xác định trong quá trình thiết kế ngược các khả năng của CPU không có giấy tờ. Phương pháp tấn công được đề xuất liên quan đến việc sử dụng bộ đệm micro-op trung gian trong bộ xử lý, bộ đệm này có thể được sử dụng để truy xuất thông tin được tích lũy trong quá trình thực hiện các lệnh suy đoán.

Vì mục đích tối ưu hóa, bộ xử lý bắt đầu thực hiện một số lệnh ở chế độ suy đoán mà không cần đợi các phép tính trước đó hoàn thành và nếu sau đó xác định rằng dự đoán đó không hợp lý, thì bộ xử lý sẽ khôi phục hoạt động về trạng thái ban đầu, nhưng dữ liệu được xử lý trong việc thực thi suy đoán được gửi vào bộ nhớ đệm, nội dung của bộ đệm này có thể được xác định.

Cần lưu ý rằng phương pháp mới vượt trội đáng kể so với cuộc tấn công Spectre v1, khiến cuộc tấn công khó bị phát hiện và không bị chặn bởi các phương pháp bảo vệ hiện có chống lại các cuộc tấn công kênh bên được thiết kế để chặn các lỗ hổng gây ra bởi việc thực thi các hướng dẫn suy đoán (ví dụ: việc sử dụng của khối lệnh LFENCE bị rò rỉ trong giai đoạn cuối của quá trình thực thi suy đoán, nhưng không bảo vệ chống rò rỉ thông qua các cấu trúc vi kiến ​​trúc).

Phương pháp này ảnh hưởng đến các mẫu bộ xử lý Intel và AMD được phát hành từ năm 2011, bao gồm dòng Intel Skylake và AMD Zen. Các CPU hiện đại chia các hướng dẫn phức tạp của bộ xử lý thành các hoạt động vi mô giống RISC đơn giản hơn, được lưu trữ trong bộ đệm riêng. Bộ đệm này về cơ bản khác với bộ đệm cấp cao hơn, không thể truy cập trực tiếp và hoạt động như một bộ đệm luồng để truy cập nhanh vào kết quả giải mã các lệnh CISC thành các vi lệnh RISC. Tuy nhiên, các nhà nghiên cứu đã tìm ra cách tạo ra các điều kiện phát sinh khi xung đột truy cập bộ đệm và cho phép người ta đánh giá nội dung của bộ đệm hoạt động vi mô bằng cách phân tích sự khác biệt về thời gian thực hiện của một số hành động nhất định.

Cuộc tấn công mới vào cấu trúc vi kiến ​​trúc của bộ xử lý Intel và AMD

Bộ đệm hoạt động vi mô trong bộ xử lý Intel được phân đoạn theo các luồng CPU (Siêu phân luồng), trong khi bộ xử lý AMD Zen sử dụng bộ đệm chung, tạo điều kiện rò rỉ dữ liệu không chỉ trong một luồng thực thi mà còn giữa các luồng khác nhau trong SMT (có thể rò rỉ dữ liệu giữa các mã chạy trên các lõi CPU logic khác nhau).

Các nhà nghiên cứu đã đề xuất một phương pháp cơ bản để phát hiện các thay đổi trong bộ đệm hoạt động vi mô và một số kịch bản tấn công cho phép tạo các kênh truyền dữ liệu ẩn và sử dụng mã dễ bị tấn công để rò rỉ dữ liệu bí mật, cả trong một quy trình (ví dụ: rò rỉ dữ liệu quy trình khi thực thi mã của bên thứ ba trong các công cụ có JIT và trong máy ảo), cũng như giữa kernel và các tiến trình trong không gian người dùng.

Khi tổ chức một biến thể của cuộc tấn công Spectre bằng cách sử dụng bộ đệm hoạt động vi mô, các nhà nghiên cứu có thể đạt được hiệu suất 965.59 Kbps với tỷ lệ lỗi 0.22% và 785.56 Kbps khi sử dụng tính năng sửa lỗi, trong trường hợp tổ chức rò rỉ trong cùng một địa chỉ không gian và mức độ đặc quyền. Với rò rỉ trải rộng trên các cấp đặc quyền khác nhau (giữa kernel và không gian người dùng), hiệu suất là 85.2 Kbps với tính năng sửa lỗi được thêm vào và 110.96 Kbps với tỷ lệ lỗi là 4%. Khi tấn công bộ xử lý AMD Zen, tạo ra sự rò rỉ giữa các lõi CPU logic khác nhau, hiệu suất là 250 Kbps với tỷ lệ lỗi là 5.59% và 168.58 Kbps khi sửa lỗi. So với phương pháp Spectre v1 cổ điển, đòn tấn công mới nhanh hơn 2.6 lần.

Dự kiến, việc bảo vệ khỏi cuộc tấn công bộ nhớ đệm micro-op sẽ yêu cầu những thay đổi làm giảm hiệu suất nhiều hơn so với khi bạn bật tính năng bảo vệ khỏi cuộc tấn công Spectre. Là một sự thỏa hiệp tối ưu, đề xuất ngăn chặn các cuộc tấn công như vậy không phải bằng cách vô hiệu hóa bộ nhớ đệm mà ở mức độ giám sát các điểm bất thường và xác định trạng thái bộ nhớ đệm điển hình cho các cuộc tấn công.

Giống như trong các cuộc tấn công Spectre, việc tổ chức rò rỉ từ kernel hoặc các quy trình khác yêu cầu thực thi một chuỗi lệnh (tiện ích) nhất định ở phía quy trình nạn nhân, dẫn đến việc thực thi các hướng dẫn mang tính suy đoán. Khoảng 100 tiện ích tương tự đã được tìm thấy trong nhân Linux, những tiện ích này sẽ bị xóa, nhưng các giải pháp cho thế hệ của chúng được tìm thấy định kỳ, chẳng hạn như liên quan đến việc chạy các chương trình BPF được thiết kế đặc biệt trong nhân.

Nguồn: opennet.ru

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