Tại sao mỗi ứng dụng Android chạy trên một quy trình Dalvik VM khác nhau?


10

Tôi đã đọc được rằng mỗi ứng dụng Android chạy trên một quy trình VM Dalvik khác nhau (tất cả đều rẽ nhánh từ hợp tử).

Tôi cũng đọc rằng các máy ảo này thực sự rất nhẹ và sử dụng bản sao trên bộ đệm ghi và tất cả những thứ đó, cho đến nay vẫn tốt.

Nhưng, tôi cũng đọc rằng điều này không được thực hiện vì lý do bảo mật (ví dụ như cách ly) - trên thực tế, dalvik vm không nên được coi là ranh giới bảo mật, Google nói.

Vì vậy, câu hỏi của tôi là: Tại sao mỗi quá trình phải chạy trên một VM khác nhau?

Câu trả lời:


11

Trong Android, mọi ứng dụng chạy như một người dùng riêng biệt. Trong nhân Linux, mỗi quy trình được sở hữu bởi một người dùng, do đó không thể chạy nhiều ứng dụng Dalvik trên một quy trình Linux.

Chi phí hoạt động của nhiều phiên bản VM Dal VM rất nhẹ vì fork()cuộc gọi hệ thống Linux là sao chép khi ghi, ghi vào trang COW được chia sẻ sẽ gây ra "lỗi trang" và trang đó sẽ bị sao chép; do đó, mặc dù hầu hết vùng nhớ của VM trong RAM được chia sẻ, không có "trạng thái chia sẻ" giữa các VM.

Quá trình phân nhánh chỉ cung cấp cách ly trạng thái, nhưng không cách ly đặc quyền.

dalvik vm không nên được coi là ranh giới an ninh

Đó là bởi vì VM không thể thực thi một ranh giới bảo mật. VM đang chạy trên chế độ người dùng (cùng chế độ với chương trình mà nó đang thực thi), có nghĩa là một lỗi trong VM có thể cho phép ứng dụng sửa đổi trạng thái VM theo cách không được dự định; hạt nhân, tuy nhiên, chạy trong chế độ đặc quyền và có thể thực thi ranh giới bảo mật.


4

Mỗi quy trình Dalvikvm chạy trong môi trường hộp cát thuộc sở hữu của id người dùng ( uid) của ứng dụng đang chạy, cần lưu ý rằng khi cài đặt ứng dụng, uidphân bổ và gán cho từng ứng dụng đã cài đặt.

Kết quả cuối cùng là mỗi ứng dụng đang chạy không thể chà đạp quá trình của người khác do uidđược chỉ định khác nhau , cho phép bảo vệ cho các ứng dụng đang chạy.

Một cách khác để nhìn vào nó là thế này - đã có là một chung uidcho tất cả các ứng dụng, sau đó một ứng dụng độc hại có thể thực sự gây ra sự tàn phá, hãy nhìn chăm chú vào các thiết lập của một người, ghi đè, chặn mã chạy của ứng dụng khác và làm tất cả các loại điều xấu TM đó ứng dụng.


3

Máy ảo Dalvik không cung cấp ranh giới bảo mật, nhưng hạt nhân đang cung cấp ranh giới bảo mật theo quy trình mà VM chạy. Chẳng hạn, đó là lý do tại sao ứng dụng Android chạy mã gốc không phải là vấn đề lớn (nhiều hơn hoặc ít hơn) theo định nghĩa chạy bên ngoài VM. Nó vẫn đang trong quá trình và kernel đảm bảo rằng quy trình sẽ không thể gây hại cho các ứng dụng khác, cho dù quy trình có chạy mã trong VM hay không.

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.