lỗ hổng bảo mật bóng ma có thể ở trong một máy ảo?


13

Có thể một máy ảo như VirtualBox có lỗ hổng bảo mật "bóng ma" không? Tôi nghĩ rằng VM có thể thực hiện không theo thứ tự, nhưng theo tôi không thể nhìn trộm bộ đệm để đọc kết quả.

Có bất kỳ lời giải thích làm thế nào có thể đọc bộ nhớ cache của một cpu ảo?


4
Có, một nghiên cứu nhỏ đã xác nhận VMWare đã phát hành các bản vá để giải quyết Spectre và Meltdown. Ngoài ra, hệ điều hành khách phải được vá, với trình ảo hóa thực tế (cả hai loại)
Ramhound

Phụ thuộc vào mức độ ảo hóa, tôi nói. Nếu bạn đang mô phỏng CPU ảo, thì có lẽ bạn an toàn. Nhưng đó không phải là những gì máy ảo hiện đại làm.
Bergi

Có bất kỳ lời giải thích làm thế nào có thể đọc bộ nhớ cache của một cpu ảo?

1
@jms chi tiết có trong bài viết kinh điển mà tôi đã liên kết trong câu trả lời của mình:Spectre works on a different level ... In this attack, the attacker tricks the speculative execution to predictively execute instructions erroneously. In a nutshell, the predictor is coerced to predict a specific branch result that results in asking for an out-of-bound memory access that the victim process would not normally have requested resulting in incorrect speculative execution. Then by the side-channel, retrieves the value of this memory. In this way memory belonging to the victim process is leaked to the malicious process.
Mokubai

1
@jms Ảo hóa chỉ nhanh vì nó sử dụng CPU vật lý với càng ít trừu tượng càng tốt và dựa vào phần cứng CPU để cung cấp sự cô lập và trừu tượng hóa. Những thứ như qemucó thể thực hiện mô phỏng sẽ an toàn hơn vì nó không phải là CPU phần cứng , nhưng nó chậm hơn nhiều và khác với ảo hóa.
Mokubai

Câu trả lời:


14

Có Spectre có thể vượt qua ranh giới máy chủ / khách, khách / chủ và khách / khách vì đây là lỗ hổng cấp độ CPU có nghĩa là thông tin có khả năng nhạy cảm có thể bị rò rỉ trên bất kỳ thứ gì chạy trên lõi CPU.

Hầu hết các câu chuyện tin tức trên internet nói về các nhà cung cấp đám mây bị ảnh hưởng nặng nề nhất vì họ có các cụm hệ thống khổng lồ được ảo hóa và có khả năng bị lạm dụng để rò rỉ thông tin nhạy cảm.

Bây giờ hầu hết các nhà cung cấp lớn đã được vá lỗi, vì tốt nhất có thể, nhưng đây sẽ là một vấn đề tồn tại với chúng ta trong một thời gian.

Security.SE có một Hỏi & Đáp chính tắc về vấn đề này và nó đề cập đến VM:

Tôi đang chạy Máy ảo / Container, tôi dễ bị tổn thương đến mức nào?

Theo câu trả lời của Steffen Ullrich

  • Các cuộc tấn công Meltdown không vượt qua VM, chỉ rò rỉ bộ nhớ kernel cho các tiến trình cục bộ.
  • Spectre có thể hoạt động trên các máy ảo.

Ngoài ra, từ Steffen một lần nữa , Meltdown và Spectre hoạt động với các container, vì các container phụ thuộc vào kernel host.

Máy ảo sử dụng CPU thực tế trong hệ thống của bạn với một số hướng dẫn đặc quyền bị mắc kẹt và có thể được chuyển hướng. Nó sử dụng bộ nhớ cache và hướng dẫn giống như máy chủ lưu trữ. Nó thực chất chỉ là một lớp khác trong CPU vật lý trong hệ thống của bạn.

Ảo hóa chỉ nhanh vì nó sử dụng CPU vật lý với càng ít trừu tượng càng tốt và dựa vào phần cứng CPU để cung cấp sự cô lập. Những thứ như qemu có thể thực hiện mô phỏng sẽ an toàn hơn vì nó không phải là CPU phần cứng, nhưng nó chậm hơn nhiều và khác với ảo hóa.

Từ bài viết kinh điển Security.se một lần nữa:

Spectre hoạt động ở một cấp độ khác và không cho phép truy cập dữ liệu không gian nhân từ không gian người dùng. Trong cuộc tấn công này, kẻ tấn công đánh lừa việc thực hiện đầu cơ để dự đoán thực hiện các hướng dẫn sai. Tóm lại, bộ dự đoán bị ép buộc để dự đoán một kết quả nhánh cụ thể (nếu -> đúng), dẫn đến yêu cầu truy cập bộ nhớ ngoài giới hạn mà quy trình nạn nhân thường không yêu cầu, dẫn đến thực hiện đầu cơ không chính xác. Sau đó, theo kênh bên, lấy giá trị của bộ nhớ này. Theo cách này, bộ nhớ thuộc về quá trình nạn nhân bị rò rỉ vào quá trình độc hại.

Vì vậy, vì VM chạy trong phần cứng CPU thực tế và tất cả những gì nó cần làm là chạy một vòng lặp cụ thể để "huấn luyện" công cụ thực thi đầu cơ. Sau đó, nó có thể sử dụng thời gian chính xác để xem các bộ đệm cho các mẫu chỉ định truy cập cụ thể của máy chủ hoặc máy khách (hoặc VM khác) mà nó đang tìm cách khai thác.

Theo cách này, nó có nghĩa là một cỗ máy có thể khai thác theo mọi hướng. Từ máy chủ đến VM, từ VM đến máy chủ và từ VM sang VM.

Đúng, nó không phải là dễ dàng và là một điều khó khăn vì lõi CPU VM có thể thay đổi bất cứ lúc nào của máy chủ và máy chủ cũng có thể vui vẻ lên lịch các tác vụ trên các lõi khác nhau, nhưng trong một thời gian dài đủ thông tin có thể bị rò rỉ để từ bỏ một khóa bí mật cho một số hệ thống hoặc tài khoản quan trọng. Cho đủ thời gian và một số phần mềm tàng hình phù hợp, mọi thứ đều có khả năng mở.

Nếu bạn muốn có một VM "an toàn" thì bạn phải đảm bảo rằng các lõi của nó được cách ly. Cách thực sự duy nhất để ngăn chặn cuộc tấn công này là "buộc" máy chủ và máy ảo chỉ sử dụng một số lõi nhất định để chúng không bao giờ chạy trên cùng một phần cứng nhưng điều này sẽ dẫn đến tăng chi phí hiệu quả vì bạn sẽ không thể có nhiều VM trên một máy chủ nhất định. Bạn sẽ không bao giờ có thể thoát khỏi việc chạy nhiều máy ảo hơn số lượng lõi có sẵn, đây là điều tôi mong đợi sẽ được thực hiện trên các máy chủ "tải thấp" vì nhiều hệ thống không hoạt động trong 90% tuổi thọ của chúng.


2
Tôi nghĩ bạn đã giải thích câu hỏi là "nếu CPU chủ bị ảnh hưởng, VM cũng sẽ bị ảnh hưởng chứ?" Theo tôi hiểu câu hỏi, nó hỏi "nếu CPU chủ không bị ảnh hưởng, VM vẫn có thể bị ảnh hưởng chứ?" Bạn có thể làm rõ điều đó không?
AndreKR

1
@AndreKR: hiện tại tất cả các CPU thực thi không theo thứ tự đều bị ảnh hưởng bởi Spectre; Chỉ với cách giải quyết phần mềm, bạn mới có thể tạo ra một loại hệ thống an toàn (và do đó VM sẽ phải quan tâm đến vấn đề này, mặc dù một trình ảo hóa có thể cách ly khách với nhau nếu CPU cung cấp các phương tiện, ví dụ như công cụ IBRS của Intel). Nhưng trên một CPU theo thứ tự không có thực thi đầu cơ, không có lỗ hổng Spectre thuộc bất kỳ loại nào có thể tồn tại giữa bất kỳ hai phần mềm nào. Bản chất của Spectre là kích động thực thi đầu cơ một cái gì đó đưa dữ liệu bí mật vào trạng thái vi kiến ​​trúc; CPU theo thứ tự không.
Peter Cordes

Điều thú vị nhất không phải là việc thực hiện đầu cơ. Điều thú vị nhất là làm thế nào một quá trình có thể tìm ra những gì trong bộ đệm - ngay cả trong VM.

@jms các cuộc tấn công kênh bên có sẵn được tạo điều kiện và được thực hiện hữu ích bằng cách thực hiện đầu cơ. Quá trình có thể không thể đọc trực tiếp các dòng bộ đệm, nhưng thực thi đầu cơ có thể rò rỉ thông tin bằng cách thực hiện các tính toán đưa giá trị vào bộ đệm có thể được phát hiện hoặc suy ra bởi các cuộc tấn công thời gian. Phần 4 của tờ giấy trắng có một lời giải thích hay: Spectreattack.com/spectre.pdf
Mokubai

0

đá quý5

Nếu bạn quan tâm đến việc nghiên cứu / tái tạo các lỗ hổng hoàn toàn bằng mô phỏng, mà không sử dụng CPU chủ, tôi không nghĩ QEMU đủ chi tiết để quan sát chúng vì nó không mô phỏng đường ống CPU.

Tuy nhiên, gem5 được sử dụng để ước tính hiệu năng hệ thống trong nghiên cứu và phát triển và mô phỏng đủ các phần bên trong CPU để bạn quan sát Spectre trong môi trường hoàn toàn sạch sẽ và được kiểm soát.

Một bản demo x86_64 thú vị với trực quan hóa đã được xuất bản tại: http://www.lowepower.com/jason/visualizing-spectre-with-gem5.html

Nhược điểm của gem5 là chậm hơn nhiều so với QEMU, mô phỏng chi tiết hơn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.