Một lỗ hổng trong KVM cho phép thực thi mã bên ngoài hệ thống khách trên bộ xử lý AMD

Các nhà nghiên cứu từ nhóm Google Project Zero đã tiết lộ vài ngày trước trong một bài đăng trên blog rằng đã xác định một lỗ hổng bảo mật (CVE-2021-29657) trong KVM hypervisor (một trình siêu giám sát dựa trên Linux nguồn mở hỗ trợ ảo hóa tăng tốc phần cứng trên x86, ARM, PowerPC và S / 390) cho phép bạn tránh sự cô lập của hệ thống khách và chạy mã của bạn ở phía môi trường máy chủ.

Bài đăng đề cập rằng vấn đề biểu hiện từ hạt nhân Linux 5.10-rc1 đến v5.12-rc6, nghĩa là, chỉ bao gồm các hạt nhân 5.10 và 5.11 (Hầu hết các nhánh phân phối ổn định không bị ảnh hưởng bởi sự cố.) Sự cố xuất hiện trong cơ chế nested_svm_vmrun, được triển khai bằng cách sử dụng tiện ích mở rộng AMD SVM (Máy ảo bảo mật) và cho phép khởi chạy hệ thống khách lồng nhau.

Trong bài đăng trên blog này, tôi mô tả một lỗ hổng trong mã KVM dành riêng cho AMD và thảo luận về cách lỗi này có thể biến thành một lối thoát máy ảo hoàn chỉnh. Theo như tôi biết, đây là bản ghi công khai đầu tiên của đột phá KVM từ khách đến máy chủ mà không dựa vào lỗi trong các thành phần không gian người dùng như QEMU.

Lỗi được thảo luận đã được gán CVE-2021-29657, ảnh hưởng đến các phiên bản hạt nhân v5.10-rc1 đến v5.12-rc6 và đã được vá vào cuối tháng 2021 năm 5.10. Vì lỗi này chỉ có thể khai thác được trong v5 và được phát hiện khoảng XNUMX tháng sau đó, nên hầu hết các triển khai KVM trong thế giới thực sẽ không bị ảnh hưởng. Tôi vẫn nghĩ rằng vấn đề là một nghiên cứu điển hình thú vị trong công việc cần thiết để xây dựng một lối thoát khách-chủ ổn định chống lại KVM và tôi hy vọng bài viết này có thể giải quyết trường hợp thỏa hiệp hypervisor không chỉ là vấn đề lý thuyết.

Các nhà nghiên cứu đề cập rằng để triển khai đúng chức năng này, hypervisor phải chặn tất cả các lệnh SVM chạy trên hệ thống khách, mô phỏng hành vi của nó và đồng bộ hóa trạng thái với phần cứng, đó là một nhiệm vụ khá khó khăn.

Sau khi phân tích việc triển khai KVM được đề xuất, các nhà nghiên cứus gặp phải lỗi logic cho phép nội dung của MSR (Đăng ký dành riêng cho kiểu máy) của máy chủ bị ảnh hưởng từ hệ thống khách, có thể được sử dụng để thực thi mã ở cấp máy chủ.

Cụ thể, việc thực thi một thao tác VMRUN từ một khách cấp lồng nhau thứ hai (L2 được khởi chạy từ một khách khác) dẫn đến một lệnh gọi thứ hai đến nested_svm_vmrun và làm hỏng cấu trúc svm-> nested.hsave, được phủ lên với dữ liệu từ vmcb từ hệ thống khách L2 .

Do đó, một tình huống phát sinh trong đó ở cấp độ khách L2 có thể giải phóng bộ nhớ trong cấu trúc svm-> nested.msrpm, nơi lưu trữ bit MSR, mặc dù nó vẫn tiếp tục được sử dụng và truy cập MSR của máy chủ. môi trường.

Điều này có nghĩa là, ví dụ, bộ nhớ của khách có thể được kiểm tra bằng cách kết xuất bộ nhớ được cấp phát của quy trình không gian người dùng của nó hoặc giới hạn tài nguyên đối với thời gian và bộ nhớ CPU có thể dễ dàng thực thi. 

Ngoài ra, KVM có thể giảm tải hầu hết các công việc liên quan đến mô phỏng thiết bị cho thành phần không gian người dùng.

Sự cố xuất hiện trong mã được sử dụng trên các hệ thống có bộ xử lý AMD (mô-đun kvm-amd.ko) và không xuất hiện trên bộ xử lý Intel.

 Bên ngoài một vài thiết bị nhạy cảm về hiệu suất liên quan đến xử lý ngắt, tất cả mã cấp thấp phức tạp để cung cấp quyền truy cập đĩa ảo, mạng hoặc GPU đều có thể được triển khai trong không gian người dùng.  

Các nhà nghiên cứu ngoài việc mô tả vấn đề Họ cũng đã chuẩn bị một nguyên mẫu hoạt động của một khai thác cho phép chạy trình bao gốc từ môi trường khách trong môi trường máy chủ trên hệ thống có bộ xử lý AMD Epyc 7351P và nhân Linux 5.10.

Người ta quan sát thấy rằng đây là khách đầu tiên lưu trữ lỗ hổng trong KVM hypervisor chính nó, không liên quan đến lỗi trong các thành phần không gian người dùng như QEMU. Bản sửa lỗi đã được chấp nhận trong nhân vào cuối tháng Ba.

Cuối cùng nếu bạn muốn biết thêm về nó về ghi chú, bạn có thể kiểm tra chi tiết Trong liên kết sau đây.


Nội dung bài viết tuân thủ các nguyên tắc của chúng tôi về đạo đức biên tập. Để báo lỗi, hãy nhấp vào đây.

Hãy là người đầu tiên nhận xét

Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.