Tấn công Intel SGX để trích xuất dữ liệu nhạy cảm hoặc thực thi mã trong vùng bảo vệ

Các nhà nghiên cứu từ Đại học Khoa học và Công nghệ Quốc phòng Quân đội Giải phóng Nhân dân, Đại học Quốc gia Singapore và ETH Zurich đã phát triển một phương pháp mới để tấn công các khu vực biệt lập Intel SGX (Software Guard eXtensions). Cuộc tấn công được gọi là SmashEx và xảy ra do các vấn đề về truy cập lại khi xử lý các tình huống ngoại lệ trong quá trình vận hành các thành phần thời gian chạy cho Intel SGX. Phương thức tấn công được đề xuất giúp bạn có thể, nếu bạn có quyền kiểm soát hệ điều hành, xác định dữ liệu bí mật nằm trong vùng kín hoặc tổ chức sao chép mã của bạn vào bộ nhớ của vùng kín và việc thực thi mã đó.

Các nguyên mẫu khai thác đã được chuẩn bị cho các vùng có thời gian chạy dựa trên Intel SGX SDK (CVE-2021-0186) và Microsoft Open Enclave (CVE-2021-33767). Trong trường hợp đầu tiên, khả năng trích xuất khóa RSA được sử dụng trên máy chủ web cho HTTPS đã được chứng minh và trong trường hợp thứ hai, có thể xác định nội dung thu được bởi tiện ích cURL chạy bên trong khu vực. Lỗ hổng này đã được xử lý theo chương trình trong các bản phát hành Intel SGX SDK 2.13 và Open Enclave 0.17.1. Ngoài Intel SGX SDK và Microsoft Open Enclave, lỗ hổng này còn xuất hiện trong Google Asylo SDK, EdgelessRT, Apache Teaclave, Rust SGX SDK, SGX-LKL, CoSMIX và Veracruz.

Chúng ta hãy nhớ lại 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, nội dung trong đó không thể đọc được và được sửa đổi ngay cả bởi kernel và mã được thực thi ở chế độ ring0, SMM và VMM. Không thể chuyển quyề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 - các lệnh mới được tạo đặc biệt EENTER, EEXIT và ERESUME được sử dụng để chuyển quyền điều khiển sang vùng bao quanh, 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.

Tấn công Intel SGX để trích xuất dữ liệu nhạy cảm hoặc thực thi mã trong vùng bảo vệ

Vấn đề là công nghệ SGX cho phép hệ điều hành hủy bỏ một vùng bằng cách đưa ra một ngoại lệ phần cứng và các vùng này không triển khai đúng cách các nguyên tắc cơ bản để xử lý các ngoại lệ đó một cách nguyên tử. Không giống như nhân hệ điều hành và các ứng dụng thông thường, mã bên trong các vùng không có quyền truy cập vào các nguyên hàm để tổ chức các hành động nguyên tử khi xử lý các ngoại lệ được ném không đồng bộ. Nếu không có các nguyên hàm nguyên tử được chỉ định, vùng bao quanh có thể bị gián đoạn bất cứ lúc nào và quay trở lại trạng thái thực thi, ngay cả vào những thời điểm khi vùng bao vây đang thực thi các phần quan trọng và ở trạng thái không an toàn (ví dụ: khi các thanh ghi CPU không được lưu/khôi phục).

Tấn công Intel SGX để trích xuất dữ liệu nhạy cảm hoặc thực thi mã trong vùng bảo vệ

Đối với hoạt động bình thường, công nghệ SGX cho phép việc thực thi vỏ bọc bị gián đoạn bởi các ngoại lệ phần cứng có thể định cấu hình. Tính năng này cho phép các môi trường thời gian chạy kèm theo thực hiện xử lý ngoại lệ hoặc xử lý tín hiệu trong nội bộ, nhưng nó cũng có thể gây ra lỗi gửi lại. Cuộc tấn công SmashEx dựa trên việc khai thác các lỗ hổng trong SDK do đó tình trạng gọi lại trình xử lý ngoại lệ không được xử lý đúng cách. Điều quan trọng là để khai thác lỗ hổng, kẻ tấn công phải có khả năng làm gián đoạn quá trình thực thi vùng bao quanh, tức là. phải kiểm soát hoạt động của môi trường hệ thống.

Sau khi ném một ngoại lệ, kẻ tấn công nhận được một khoảng thời gian nhỏ trong đó luồng thực thi có thể bị chặn thông qua thao tác với các tham số đầu vào. Đặc biệt, nếu bạn có quyền truy cập vào hệ thống (môi trường bên ngoài vùng bao quanh), bạn có thể tạo một ngoại lệ mới ngay sau khi thực hiện lệnh nhập vùng bao vây (EENTER), lệnh này sẽ trả lại quyền điều khiển cho hệ thống ở giai đoạn thiết lập ngăn xếp cho enclave vẫn chưa được hoàn thiện, trong đó trạng thái của các thanh ghi CPU cũng được lưu lại.

Sau đó, hệ thống có thể trả lại quyền điều khiển cho vùng, nhưng do ngăn xếp của vùng không được cấu hình tại thời điểm ngắt, nên vùng này sẽ thực thi với ngăn xếp nằm trong bộ nhớ hệ thống, có thể được sử dụng để sử dụng lập trình hướng quay lại (ROP ) kỹ thuật khai thác. Lập trình hướng). Khi sử dụng kỹ thuật ROP, kẻ tấn công không cố gắng đặt mã của mình vào bộ nhớ mà hoạt động trên các đoạn lệnh máy đã có sẵn trong các thư viện đã tải, kết thúc bằng lệnh trả về điều khiển (theo quy định, đây là phần cuối của các chức năng thư viện) . Công việc khai thác bao gồm việc xây dựng một chuỗi lệnh gọi đến các khối tương tự (“tiện ích”) để có được chức năng mong muốn.

Tấn công Intel SGX để trích xuất dữ liệu nhạy cảm hoặc thực thi mã trong vùng bảo vệ
Tấn công Intel SGX để trích xuất dữ liệu nhạy cảm hoặc thực thi mã trong vùng bảo vệ


Nguồn: opennet.ru

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