Lỗ hổng trong cơ chế MMIO của bộ xử lý Intel

Intel đã tiết lộ thông tin về một loại rò rỉ dữ liệu mới thông qua cấu trúc vi kiến ​​trúc của bộ xử lý, cho phép, thông qua thao tác của cơ chế MMIO (Đầu ra bản đồ bộ nhớ), để xác định thông tin được xử lý trên các lõi CPU khác. Ví dụ: các lỗ hổng cho phép trích xuất dữ liệu từ các quy trình khác, các vùng Intel SGX hoặc máy ảo. Các lỗ hổng chỉ dành riêng cho CPU Intel; bộ xử lý từ các nhà sản xuất khác không bị ảnh hưởng bởi các lỗ hổng này.

Các lỗ hổng xuất hiện trong nhiều CPU Intel khác nhau, bao gồm các bộ xử lý dựa trên các vi kiến ​​trúc Haswell, Skylake, IceLake, Broadwell, Lakefield, Kabylake, Cometlake và Rocketlake, cũng như các bộ xử lý Xeon EP/EX, Scalable và một số bộ xử lý máy chủ Atom. Để thực hiện một cuộc tấn công, cần có quyền truy cập vào MMIO, ví dụ: có thể có được quyền truy cập này trong các hệ thống ảo hóa cung cấp khả năng truy cập MMIO cho các hệ thống khách do kẻ tấn công kiểm soát. Một bản sửa lỗi cũng có thể được yêu cầu đối với các hệ thống sử dụng vùng cách ly Intel SGX (Software Guard Extensions).

Việc chặn lỗ hổng này yêu cầu cả cập nhật vi mã và sử dụng các phương pháp bảo vệ phần mềm bổ sung dựa trên việc sử dụng lệnh VERW để xóa nội dung của bộ đệm vi kiến ​​trúc khi quay trở lại từ kernel về không gian người dùng hoặc khi chuyển quyền điều khiển sang hệ thống khách. Biện pháp bảo vệ tương tự cũng được sử dụng để chặn các cuộc tấn công đã được xác định trước đó của các lớp MDS (Lấy mẫu dữ liệu vi kiến ​​trúc), SRBDS (Lấy mẫu dữ liệu bộ đệm đăng ký đặc biệt) và TAA (Hủy bỏ không đồng bộ giao dịch).

Về mặt vi mã, những thay đổi cần thiết để triển khai tính năng bảo vệ đã được đề xuất trong bản cập nhật vi mã tháng 2022.1 cho CPU Intel (IPU 5.18.5). Trong nhân Linux, tính năng bảo vệ chống lại một loại tấn công mới được bao gồm trong các bản phát hành 5.15.48, 5.10.123, 5.4.199, 4.19.248, 4.14.284, 4.9.319 và XNUMX. Để kiểm tra mức độ phơi nhiễm của hệ thống với các lỗ hổng trong MMIO và đánh giá hoạt động của các cơ chế bảo vệ nhất định, tệp “/sys/devices/system/cpu/vulnerabilities/mmio_stale_data” đã được thêm vào nhân Linux. Để kiểm soát việc đưa tính năng bảo vệ vào, tham số khởi động kernel “mmio_stale_data” đã được triển khai, tham số này có thể lấy các giá trị “full” (cho phép làm sạch bộ đệm khi di chuyển sang không gian người dùng và trong VM), “full,nosmt” ( là “đầy đủ” + vô hiệu hóa thêm SMT/Siêu luồng) và “tắt” (tắt tính năng bảo vệ). Các bản sửa lỗi riêng biệt được cung cấp cho bộ ảo hóa Xen và hệ điều hành Qubes.

Bản chất của lớp lỗ hổng được xác định là một số thao tác dẫn đến việc sao chép hoặc di chuyển dữ liệu còn lại sau khi thực thi trên các lõi CPU khác từ bộ đệm vi kiến ​​trúc này sang bộ đệm vi kiến ​​trúc khác. Các lỗ hổng trong MMIO cho phép dữ liệu còn sót lại này được chuyển từ bộ đệm vi kiến ​​trúc bị cô lập sang các thanh ghi hiển thị trong ứng dụng hoặc bộ đệm CPU. Ba phương pháp đã được xác định để trích xuất dữ liệu dư thông qua MMIO:

  • DRPW (Ghi một phần thanh ghi thiết bị, CVE-2022-21166) là sự cố xử lý không chính xác việc ghi vào một số thanh ghi MMIO. Nếu kích thước của dữ liệu được ghi nhỏ hơn kích thước của thanh ghi thì thông tin còn lại từ bộ đệm điền cũng được sao chép vào thanh ghi. Do đó, một quy trình bắt đầu thao tác ghi chưa hoàn chỉnh vào thanh ghi MMIO có thể lấy dữ liệu còn lại trong bộ đệm vi kiến ​​trúc từ các thao tác được thực hiện trên các lõi CPU khác.
  • SBDS (Lấy mẫu dữ liệu bộ đệm chia sẻ, CVE-2022-21125) là hiện tượng rò rỉ dữ liệu còn sót lại từ bộ đệm lấp đầy liên kết với hạt nhân do chuyển động từ bộ đệm trung gian chung cho tất cả các hạt nhân.
  • SBDR (Đọc dữ liệu bộ đệm chia sẻ, CVE-2022-21123) - sự cố tương tự như SBDS, nhưng khác ở chỗ dữ liệu còn sót lại có thể nằm trong cấu trúc CPU mà ứng dụng có thể nhìn thấy. Sự cố SBDS và SBDR chỉ xuất hiện trên bộ xử lý dành cho hệ thống máy khách và trên dòng máy chủ Intel Xeon E3.

Lỗ hổng trong cơ chế MMIO của bộ xử lý Intel


Nguồn: opennet.ru

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