Plundervolt là phương thức tấn công mới vào vi xử lý Intel ảnh hưởng tới công nghệ SGX

Intel phát hành bản cập nhật vi mã sửa lỗi sự dễ bị tổn thương (CVE-2019-14607) cho phép thông qua thao tác với cơ chế điều khiển tần số và điện áp động trong CPU, có thể gây hư hại cho nội dung của ô dữ liệu, bao gồm cả các khu vực được sử dụng để tính toán trong các vùng cách ly Intel SGX. Cuộc tấn công được gọi là Plundervolt và có khả năng cho phép người dùng cục bộ nâng cao đặc quyền của họ trên hệ thống, gây ra tình trạng từ chối dịch vụ và giành quyền truy cập vào dữ liệu nhạy cảm.

Cuộc tấn công chỉ nguy hiểm trong bối cảnh các thao tác tính toán trong vùng SGX, vì nó yêu cầu quyền root trong hệ thống để thực hiện. Trong trường hợp đơn giản nhất, kẻ tấn công có thể làm biến dạng thông tin được xử lý trong khu vực, nhưng trong các tình huống phức tạp hơn, khả năng tạo lại các khóa riêng được lưu trữ trong khu vực được sử dụng để mã hóa bằng thuật toán RSA-CRT và AES-NI là không thể. bị loại trừ. Kỹ thuật này cũng có thể được sử dụng để tạo ra lỗi trong các thuật toán đúng ban đầu nhằm gây ra các lỗ hổng khi làm việc với bộ nhớ, chẳng hạn như để tổ chức quyền truy cập vào một khu vực bên ngoài ranh giới của bộ đệm được phân bổ.
Mã nguyên mẫu để thực hiện một cuộc tấn công xuất bản trên GitHub

Bản chất của phương pháp là tạo điều kiện cho việc xảy ra các lỗi dữ liệu không mong muốn trong quá trình tính toán trong SGX, từ đó việc sử dụng mã hóa và xác thực bộ nhớ trong vùng bao bọc không bảo vệ được. Để tạo ra hiện tượng méo tiếng, hóa ra có thể sử dụng các giao diện phần mềm tiêu chuẩn để kiểm soát tần số và điện áp, thường được sử dụng để giảm mức tiêu thụ điện năng trong thời gian hệ thống không hoạt động và kích hoạt hiệu suất tối đa khi thực hiện công việc chuyên sâu. Các đặc tính tần số và điện áp trải rộng trên toàn bộ chip, bao gồm cả tác động của việc tính toán trong một vùng cách ly.

Bằng cách thay đổi điện áp, bạn có thể tạo điều kiện trong đó điện tích không đủ để tái tạo ô nhớ bên trong CPU và giá trị của nó sẽ thay đổi. Sự khác biệt chính từ cuộc tấn công hàngbúa là RowHammer cho phép bạn thay đổi nội dung của từng bit trong bộ nhớ DRAM bằng cách đọc dữ liệu theo chu kỳ từ các ô lân cận, trong khi Plundervolt cho phép bạn thay đổi các bit bên trong CPU khi dữ liệu đã được tải từ bộ nhớ để tính toán. Tính năng này cho phép bạn bỏ qua cơ chế mã hóa và kiểm soát tính toàn vẹn được sử dụng trong SGX đối với dữ liệu trong bộ nhớ, vì các giá trị trong bộ nhớ vẫn chính xác nhưng có thể bị biến dạng trong quá trình thao tác với chúng trước khi kết quả được ghi vào bộ nhớ.

Nếu giá trị sửa đổi này được sử dụng trong quá trình nhân của quá trình mã hóa, đầu ra sẽ bị từ chối với văn bản mã hóa không chính xác. Có khả năng liên hệ với bộ xử lý trong SGX để mã hóa dữ liệu của nó, kẻ tấn công có thể gây ra lỗi, tích lũy số liệu thống kê về những thay đổi trong văn bản mã hóa đầu ra và trong vài phút, khôi phục giá trị của khóa được lưu trữ trong vùng bảo vệ. Văn bản đầu vào ban đầu và văn bản mã hóa đầu ra chính xác đã được biết, khóa không thay đổi và đầu ra của văn bản mã hóa không chính xác cho biết rằng một số bit đã bị biến dạng thành giá trị ngược lại.

Đã phân tích các cặp giá trị của bản mã đúng và sai được tích lũy trong các lần thất bại khác nhau, sử dụng các phương pháp phân tích lỗi khác biệt (DFA, Phân tích lỗi khác biệt) Có thể dự đoán các khóa có thể được sử dụng để mã hóa đối xứng AES, sau đó, bằng cách phân tích giao điểm của các khóa trong các bộ khác nhau, xác định khóa mong muốn.

Nhiều mẫu bộ xử lý Intel khác nhau bị ảnh hưởng bởi sự cố này, bao gồm cả CPU Intel Core với 6
Thế hệ thứ 10, cũng như thế hệ thứ năm và thứ sáu của Xeon E3, thế hệ thứ nhất và thứ hai của Intel Xeon Scalable, Xeon D,
Xeon W và Xeon E.

Hãy để chúng tôi nhắc bạn rằng công nghệ SGX (Phần mở rộng bảo vệ phần mềm) xuất hiện trong bộ xử lý Intel Core thế hệ thứ sáu (Skylake) và cung cấp một loạt hướng dẫn cho phép các ứng dụng cấp người dùng phân bổ các vùng bộ nhớ đóng - các vùng kín, nội dung của chúng không thể được đọc hoặc sửa đổi ngay cả bởi kernel và mã chạy ở chế độ ring0, SMM và VMM. Không thể chuyển điều khiển sang mã trong vùng bằng cách sử dụng các chức năng nhảy và thao tác truyền thống với các thanh ghi và ngăn xếp; để chuyển điều khiển sang vùng, một lệnh mới được tạo đặc biệt sẽ được sử dụng để thực hiện kiểm tra quyền. Trong trường hợp này, mã được đặt trong vùng bao quanh có thể sử dụng các phương thức gọi cổ điển để truy cập các chức năng bên trong vùng bao bọc và các hướng dẫn đặc biệt để gọi các hàm bên ngoài. Mã hóa bộ nhớ kèm theo được sử dụng để bảo vệ khỏi các cuộc tấn công phần cứng chẳng hạn như kết nối với mô-đun DRAM.

Nguồn: opennet.ru

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