Lỗ hổng trong CPU AMD cho phép bạn vượt qua cơ chế bảo vệ SEV (Ảo hóa mã hóa an toàn)

Các nhà nghiên cứu tại Trung tâm bảo mật thông tin Helmholtz (CISPA) đã công bố một phương pháp tấn công CacheWarp mới nhằm xâm phạm cơ chế bảo mật AMD SEV (Ảo hóa bảo mật) được sử dụng trong các hệ thống ảo hóa để bảo vệ máy ảo khỏi sự can thiệp của trình ảo hóa hoặc quản trị viên hệ thống máy chủ. Phương pháp được đề xuất cho phép kẻ tấn công có quyền truy cập vào bộ ảo hóa để thực thi mã của bên thứ ba và nâng cao đặc quyền trong máy ảo được bảo vệ bằng AMD SEV.

Cuộc tấn công dựa trên việc sử dụng lỗ hổng (CVE-2023-20592) do hoạt động không chính xác của bộ đệm trong quá trình thực thi lệnh của bộ xử lý INVD, nhờ đó có thể đạt được sự không khớp dữ liệu trong bộ nhớ và bộ đệm và bỏ qua các cơ chế để duy trì tính toàn vẹn của bộ nhớ máy ảo, được triển khai dựa trên các tiện ích mở rộng SEV-ES và SEV-SNP. Lỗ hổng này ảnh hưởng đến bộ xử lý AMD EPYC từ thế hệ thứ nhất đến thế hệ thứ ba.

Đối với bộ xử lý AMD EPYC thế hệ thứ ba (Zen 3), sự cố đã được giải quyết trong bản cập nhật vi mã tháng 1 do AMD phát hành ngày hôm qua (bản sửa lỗi không dẫn đến bất kỳ sự suy giảm hiệu suất nào). Đối với thế hệ thứ nhất và thứ hai của AMD EPYC (Zen 2 và Zen 4), tính năng bảo vệ không được cung cấp vì các CPU này không hỗ trợ tiện ích mở rộng SEV-SNP, tiện ích cung cấp khả năng kiểm soát tính toàn vẹn cho máy ảo. Thế hệ thứ tư của bộ xử lý AMD AMD EPYC “Genoa” dựa trên vi kiến ​​trúc “Zen XNUMX” không dễ bị tấn công.

Công nghệ AMD SEV được sử dụng để cách ly máy ảo bởi các nhà cung cấp đám mây như Amazon Web Services (AWS), Google Cloud, Microsoft Azure và Cơ sở hạ tầng điện toán Oracle (OCI). Bảo vệ AMD SEV được triển khai thông qua mã hóa cấp độ phần cứng của bộ nhớ máy ảo. Ngoài ra, tiện ích mở rộng SEV-ES (Trạng thái được mã hóa) bảo vệ các thanh ghi CPU. Chỉ hệ thống khách hiện tại mới có quyền truy cập vào dữ liệu được giải mã, còn các máy ảo khác và bộ điều khiển ảo hóa, khi cố gắng truy cập bộ nhớ này, sẽ nhận được một bộ dữ liệu được mã hóa.

Thế hệ bộ xử lý AMD EPYC thứ ba đã giới thiệu một phần mở rộng bổ sung, SEV-SNP (Phân trang lồng nhau an toàn), đảm bảo hoạt động an toàn của các bảng trang bộ nhớ lồng nhau. Ngoài mã hóa bộ nhớ chung và cách ly đăng ký, SEV-SNP còn thực hiện các biện pháp bổ sung để bảo vệ tính toàn vẹn của bộ nhớ bằng cách ngăn chặn các thay đổi đối với VM của bộ điều khiển ảo hóa. Các khóa mã hóa được quản lý bên cạnh bộ xử lý PSP (Bộ xử lý bảo mật nền tảng) riêng biệt được tích hợp trong chip, được triển khai trên cơ sở kiến ​​trúc ARM.

Bản chất của phương pháp tấn công được đề xuất là sử dụng lệnh INVD để vô hiệu hóa các khối (dòng) trong bộ đệm của các trang bẩn mà không đổ dữ liệu tích lũy trong bộ đệm vào bộ nhớ (ghi lại). Do đó, phương pháp này cho phép bạn xóa dữ liệu đã thay đổi khỏi bộ đệm mà không thay đổi trạng thái bộ nhớ. Để thực hiện một cuộc tấn công, người ta đề xuất sử dụng các ngoại lệ phần mềm (lỗi tiêm) để làm gián đoạn hoạt động của máy ảo ở hai nơi: trước hết, kẻ tấn công gọi lệnh “wbnoinvd” để thiết lập lại tất cả các hoạt động ghi bộ nhớ tích lũy trong bộ đệm và ở vị trí thứ hai gọi lệnh “invd” để đưa các hoạt động ghi không được phản ánh trong bộ nhớ về trạng thái cũ.

Để kiểm tra lỗ hổng bảo mật trong hệ thống của bạn, một nguyên mẫu khai thác đã được xuất bản cho phép bạn chèn một ngoại lệ vào máy ảo được bảo vệ thông qua AMD SEV và khôi phục các thay đổi trong VM chưa được đặt lại vào bộ nhớ. Có thể sử dụng khôi phục thay đổi để thay đổi luồng chương trình bằng cách trả về địa chỉ trả về cũ trên ngăn xếp hoặc sử dụng tham số đăng nhập của phiên cũ đã được xác thực trước đó bằng cách trả về giá trị thuộc tính xác thực.

Ví dụ: các nhà nghiên cứu đã chứng minh khả năng sử dụng phương pháp CacheWarp để thực hiện cuộc tấn công Bellcore vào việc triển khai thuật toán RSA-CRT trong thư viện ipp-crypto, giúp khôi phục khóa riêng thông qua việc thay thế lỗi khi tính toán số chữ ký. Nó cũng cho thấy cách bạn có thể thay đổi các tham số xác minh phiên thành OpenSSH khi kết nối từ xa với hệ thống khách, sau đó thay đổi trạng thái xác minh khi chạy tiện ích sudo để giành quyền root trong Ubuntu 20.04. Việc khai thác đã được thử nghiệm trên các hệ thống có bộ xử lý AMD EPYC 7252, 7313P và 7443.

Nguồn: opennet.ru

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