paint-brush
Bảo mật vi kiến trúc của AWS Firecracker VMM: Phân tích hệ thống ngăn chặn pháo hoatừ tác giả@autoencoder
298 lượt đọc

Bảo mật vi kiến trúc của AWS Firecracker VMM: Phân tích hệ thống ngăn chặn pháo hoa

dài quá đọc không nổi

Bài nghiên cứu này điều tra mức độ an toàn của Firecracker trước các cuộc tấn công vi kiến trúc.
featured image - Bảo mật vi kiến trúc của AWS Firecracker VMM: Phân tích hệ thống ngăn chặn pháo hoa
Auto Encoder: How to Ignore the Signal Noise HackerNoon profile picture
0-item

tác giả:

(1) Zane Weissman, Học viện Bách khoa Worcester Worcester, MA, Hoa Kỳ {[email protected]};

(2) Thomas Eisenbarth, Đại học Lübeck Lübeck, SH, Đức {[email protected]};

(3) Thore Tiemann, Đại học Lübeck Lübeck, SH, Đức {[email protected]};

(4) Berk Sunar, Học viện Bách khoa Worcester Worcester, MA, Hoa Kỳ {[email protected]}.

Bảng liên kết

4. PHÂN TÍCH HỆ THỐNG CHỨA FIRECACKER

Hình 2 cho thấy khả năng ngăn chặn do Firecracker cung cấp, như được trình bày bởi AWS. Trong phần này, chúng tôi phân tích từng thành phần được mô tả và khả năng phòng vệ của chúng cũng như các lỗ hổng đối với các cuộc tấn công vi kiến trúc


Hình 3: Trong mô hình mối đe dọa giữa người dùng với người dùng, chúng tôi giả định rằng đối tượng thuê dịch vụ đám mây độc hại cố gắng lọc thông tin từ đối tượng thuê khác. Chúng tôi giả định kẻ tấn công có quyền kiểm soát ứng dụng và thời gian chạy của máy ảo trong khi nhân khách được CSP cung cấp.


Hình 4: Trong mô hình mối đe dọa từ người dùng đến máy chủ, đối tượng thuê độc hại nhằm mục đích lọc thông tin khỏi hệ thống máy chủ, e. g. trình quản lý máy ảo hoặc hạt nhân máy chủ. Kẻ tấn công có quyền kiểm soát thời gian chạy và ứng dụng trong máy ảo của nó trong khi kernel khách được CSP cung cấp.


KVM . Máy ảo dựa trên nhân Linux (KVM) là trình ảo hóa được triển khai trong các nhân Linux hiện đại và do đó là một phần của cơ sở mã Linux. Nó ảo hóa chế độ người giám sát và người dùng của phần cứng cơ bản, quản lý chuyển đổi ngữ cảnh giữa các máy ảo và xử lý hầu hết các lý do thoát VM trừ khi chúng liên quan đến hoạt động I/O. Bên cạnh các cơ chế cách ly kiến trúc này, KVM còn triển khai các biện pháp giảm nhẹ chống lại các cuộc tấn công của Spectre trên VM-exit để bảo vệ hệ điều hành máy chủ hoặc trình ảo hóa khỏi các khách độc hại. Firecracker phụ thuộc rất nhiều vào KVM làm công cụ ảo hóa của nó. Tuy nhiên, vì KVM là một phần của mã nguồn Linux và được cộng đồng Linux phát triển nên chúng tôi xác định KVM không phải là một phần của Firecracker. Do đó, các biện pháp đối phó chống lại các cuộc tấn công vi kiến trúc được triển khai trong KVM không thể quy cho hệ thống ngăn chặn của Firecracker.


Siêu dữ liệu, thiết bị và dịch vụ I/O. Siêu dữ liệu, thiết bị và dịch vụ I/O là các bộ phận của Firecracker VMM và API tương tác trực tiếp với VM, thu thập và quản lý số liệu cũng như cung cấp kết nối. AWS đề cao tính đơn giản của các giao diện này (để giảm bề mặt tấn công) và chúng được viết từ đầu cho Firecracker trong Rust, một ngôn ngữ lập trình nổi tiếng với các tính năng bảo mật [9]. Tuy nhiên, đáng chú ý nhất là Rust cung cấp khả năng bảo vệ trong quá trình chống lại các truy cập bộ nhớ không hợp lệ và ngoài giới hạn, nhưng các cuộc tấn công vi kiến trúc như tấn công bộ đệm, Spectre và MDS có thể rò rỉ thông tin giữa các quy trình thay vì trực tiếp chiếm quyền điều khiển quy trình của nạn nhân.


Một điểm khác biệt đáng chú ý khác giữa Firecracker và nhiều VMM khác là tất cả các dịch vụ này đều chạy trong cùng một quy trình máy chủ như chính VM, mặc dù trong một luồng khác. Trong khi việc ảo hóa các địa chỉ bộ nhớ trong VM gây ra một số xáo trộn giữa mã của khách và các dịch vụ I/O, một số cuộc tấn công của Spectre hoạt động cụ thể trong một quy trình duy nhất. Tuy nhiên, các cuộc tấn công nội bộ có thể ít gây ra mối đe dọa hơn đối với các hệ thống trong thế giới thực vì hai khách chạy trên cùng một phần cứng, mỗi khách đều có bản sao riêng của các dịch vụ thiết yếu này.


Rào chắn cai ngục. Trong trường hợp API hoặc VMM bị xâm phạm, quản ngục sẽ cung cấp một rào cản phòng thủ cuối cùng xung quanh phiên bản Firecracker. Nó bảo vệ các tập tin và tài nguyên của hệ thống máy chủ bằng các không gian tên và nhóm điều khiển (cgroups), tương ứng [7]. Các cuộc tấn công vi kiến trúc không đe dọa trực tiếp đến các tệp, theo định nghĩa, nằm ngoài trạng thái vi kiến trúc. Các nhóm cho phép quản trị viên hệ thống chỉ định các quy trình cho các nhóm, sau đó phân bổ, hạn chế và giám sát việc sử dụng tài nguyên hệ thống trên cơ sở từng nhóm [17]. Điều hợp lý là các hạn chế được áp dụng với các nhóm có thể cản trở khả năng của kẻ tấn công trong việc thực hiện một số cuộc tấn công vi kiến trúc nhất định. Ví dụ: giới hạn bộ nhớ có thể gây khó khăn cho việc thực hiện các cuộc tấn công bộ đệm dựa trên trục xuất hoặc giới hạn thời gian CPU có thể ngăn kẻ tấn công sử dụng hiệu quả công cụ từ chối dịch vụ CPU như HyperDegrade [2] có thể làm chậm nạn nhân quá trình, đơn giản hóa thời gian của quá trình lọc hoặc tiêm kênh bên vi kiến trúc. Trong thực tế, Firecracker không được phân phối theo bất kỳ quy tắc nhóm cụ thể nào [7]; trên thực tế, nó được thiết kế đặc biệt để vận hành hiệu quả nhiều máy ảo Firecracker theo phân bổ tài nguyên Linux mặc định [6].


Không có hệ thống cách ly và ngăn chặn nào trong Firecracker dường như trực tiếp bảo vệ khỏi các cuộc tấn công từ người dùng đến người dùng hoặc từ người dùng đến máy chủ. Do đó, chúng tôi đã tiến hành thử nghiệm nhiều bằng chứng tấn công vi kiến trúc khác nhau về các khái niệm bên trong và bên ngoài máy ảo Firecracker.


Bài viết này có sẵn trên arxiv theo giấy phép CC BY-NC-ND 4.0 DEED.