Lỗ hổng này là do các tính năng tối ưu hóa bộ nhớ trong bộ xử lý Intel.
Một lần nữa, một lỗ hổng bảo mật đã được phát hiện trong hệ thống thực thi lệnh dự đoán của bộ xử lý Intel , và lần này một nhà nghiên cứu của Google đã tiết lộ rằng ông đã xác định được một lỗ hổng mới (đã được lập danh mục với mã CVE-2022-40982 ), được gọi là "Downfall".
Lỗ hổng Downfall cho phép xác định nội dung của các thanh ghi vector XMM, YMM và ZMM, vốn đã được sử dụng trong các tiến trình khác khi thực thi các lệnh AVX trên cùng một lõi CPU.
về sự sụp đổ
Về lỗ hổng này, người ta đề cập rằng một kẻ tấn công không có đặc quyền nhưng có khả năng thực thi mã của riêng mình trên hệ thống có thể sử dụng lỗ hổng để đánh cắp dữ liệu từ các tiến trình người dùng khác, nhân hệ thống, các vùng bảo mật Intel SGX biệt lập và các máy ảo.
Các thanh ghi vectơ có thể lọc được sử dụng rộng rãi trong mã hóa, chức năng sao chép bộ nhớ và xử lý chuỗi, ví dụ: các thanh ghi này được sử dụng trong thư viện Glibc trong các hàm memcpy, strcmp và strlen, trong số những thứ khác. Từ quan điểm thực tế, lỗ hổng có thể bị khai thác để xác định dữ liệu đang được xử lý trong hướng dẫn AES-NI hoặc REP-MOVS (được sử dụng trong chức năng memcpy) trong các quy trình khác, có thể làm rò rỉ khóa mã hóa, dữ liệu nhạy cảm và mật khẩu người dùng.
Lỗ hổng này xuất hiện ở các bộ xử lý Intel hỗ trợ tập lệnh mở rộng AVX2 và AVX-512 (tức là ảnh hưởng đến các bộ xử lý từ thế hệ thứ 6 đến thế hệ thứ 11), trong khi các bộ xử lý Intel dựa trên kiến trúc vi xử lý Alder Lake, Raptor Lake và Sapphire Rapids không bị ảnh hưởng.
Như với lỗ hổng Zenbleed được phát hiện gần đây ảnh hưởng đến bộ xử lý AMD Zen2, trong Downfall, lý do của lỗ hổng là rò rỉ dữ liệu từ các tệp nhật ký, được sử dụng để chia sẻ nội dung nhật ký trên tất cả các tác vụ trên cùng một lõi CPU.
Lỗi rò rỉ này là do việc truyền dữ liệu dự đoán trong quá trình thực thi lệnh GATHER , có sẵn trong các phần mở rộng AVX2 và AVX-512, được thiết kế để cung cấp khả năng truy cập nhanh vào các dữ liệu khác nhau trong bộ nhớ. Trong quá trình thực thi lệnh GATHER, dữ liệu cũ từ tập tin thanh ghi được sử dụng trong việc thực thi dự đoán các lệnh phụ thuộc. Dữ liệu này không được phản ánh trực tiếp trong các thanh ghi phần mềm nhưng có thể được phát hiện bằng các kỹ thuật tấn công kênh phụ được thiết kế cho các cuộc tấn công Meltdown, chẳng hạn như phân tích dữ liệu còn sót lại trong bộ nhớ cache của CPU.
Để khai thác lỗ hổng Downfall, một kỹ thuật tấn công gọi là Gather Data Sampling (GDS) đã được phát triển, và các nguyên mẫu khai thác đã được công bố nhằm trích xuất các khóa mã hóa từ tiến trình của người dùng khác, rò rỉ dữ liệu sau khi hàm memcpy sao chép nó vào nhân Linux, và chặn các ký tự được in còn sót lại trong các thanh ghi vector sau khi các tiến trình khác đã chạy. Ví dụ, nó chứng minh khả năng định nghĩa các khóa AES được sử dụng để mã hóa dữ liệu trong tiến trình của người dùng khác bằng thư viện OpenSSL.
Phương pháp này đã chứng minh hiệu quả cao: trong một thí nghiệm với 100 khóa khác nhau, nó đã xác định thành công 100% khóa AES-128 và 86% khóa AES-256, với mỗi lần thử không quá 10 giây. Trong các hệ thống điện toán đám mây, cuộc tấn công này có thể được sử dụng để xác định dữ liệu đang được xử lý trên các máy ảo khác. Lỗ hổng này có thể bị khai thác bằng cách thực thi mã JavaScript trong trình duyệt web.
Điều đáng chú ý là Intel đã biết về vấn đề này vào năm ngoái (cụ thể là vào tháng 6.1.44) và lỗ hổng này chỉ được công bố vào năm nay tại hội nghị Black Hat USA. Các bản vá để bảo vệ chống lại lỗ hổng này đã được bao gồm trong các bản cập nhật nhân Linux khác nhau, từ phiên bản 6.4.9 đến 4.14.321.
Ngoài ra, trong số các biện pháp khả thi để tránh tác động tiêu cực của việc bảo vệ chống lại lỗ hổng Sụp đổ đối với hiệu suất, có đề cập đến việc thực hiện các thay đổi trong trình biên dịch để vô hiệu hóa việc sử dụng câu lệnh GATHER hoặc thêm câu lệnh ngay sau GATHER LFENCE, vô hiệu hóa việc thực thi ưu tiên các câu lệnh tiếp theo trước khi tất cả các lần xác nhận trước đó hoàn thành.
Đối với các hệ thống không có bản sửa lỗi phần sụn, hỗ trợ cho tất cả phần mở rộng AVX đã bị vô hiệu hóa, trong khi đối với phần cập nhật vi mã Intel, nó cũng cung cấp khả năng sử dụng giao diện MSR để vô hiệu hóa phần sụn bảo vệ trong ngữ cảnh của các quy trình riêng lẻ.
Cuối cùng, nếu bạn muốn tìm hiểu thêm về vấn đề này , bạn có thể xem chi tiết tại liên kết sau.