Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.
Trang này được dịch bởi Cloud Translation API.
Switch to English

Linux được tăng cường bảo mật trong Android

Là một phần của mô hình bảo mật Android, Android sử dụng Linux được tăng cường bảo mật (SELinux) để thực thi kiểm soát truy cập bắt buộc (MAC) trên tất cả các quy trình, ngay cả các quy trình chạy với đặc quyền root / superuser (khả năng của Linux). Nhiều công ty và tổ chức đã đóng góp vào việc triển khai SELinux của Android. Với SELinux, Android có thể bảo vệ và hạn chế các dịch vụ hệ thống tốt hơn, kiểm soát quyền truy cập vào dữ liệu ứng dụng và nhật ký hệ thống, giảm tác động của phần mềm độc hại và bảo vệ người dùng khỏi các lỗ hổng tiềm ẩn trong mã trên thiết bị di động.

SELinux hoạt động trên nguyên tắc từ chối mặc định: Bất cứ điều gì không được phép rõ ràng đều bị từ chối. SELinux có thể hoạt động ở hai chế độ toàn cầu:

  • Chế độ dễ dãi, trong đó phủ nhận sự cho phép được ghi lại nhưng không được thực thi.
  • Chế độ thực thi , trong đó việc từ chối quyền được ghi lại thực thi.

Android bao gồm SELinux ở chế độ thực thi và chính sách bảo mật tương ứng hoạt động theo mặc định trên AOSP. Trong chế độ thực thi, các hành động không được phép sẽ bị ngăn chặn và tất cả các hành động cố gắng vi phạm đều được kernel ghi vào dmesglogcat . Khi phát triển, bạn nên sử dụng những lỗi này để tinh chỉnh phần mềm và các chính sách SELinux trước khi thực thi chúng. Để biết thêm chi tiết, hãy xem Triển khai SELinux .

SELinux cũng hỗ trợ chế độ cho phép theo từng miền, trong đó các miền (quy trình) cụ thể có thể được cho phép trong khi đặt phần còn lại của hệ thống ở chế độ thực thi toàn cầu. Miền chỉ đơn giản là một nhãn xác định một quy trình hoặc một tập hợp các quy trình trong chính sách bảo mật, trong đó tất cả các quy trình được gắn nhãn cùng một miền đều được chính sách bảo mật xử lý giống nhau. Chế độ cho phép theo tên miền cho phép ứng dụng SELinux ngày càng nhiều vào một phần ngày càng tăng của hệ thống và phát triển chính sách cho các dịch vụ mới (trong khi vẫn giữ cho phần còn lại của hệ thống thực thi).

Lý lịch

Mô hình bảo mật Android một phần dựa trên khái niệm hộp cát ứng dụng . Mỗi ứng dụng chạy trong hộp cát của riêng nó. Trước Android 4.3, các hộp cát này được xác định bằng cách tạo một UID Linux duy nhất cho mỗi ứng dụng tại thời điểm cài đặt. Android 4.3 trở lên sử dụng SELinux để xác định rõ hơn ranh giới của hộp cát ứng dụng Android.

Trong Android 5.0 trở lên, SELinux được thực thi hoàn toàn, dựa trên việc phát hành dễ dàng Android 4.3 và thực thi một phần của Android 4.4. Với thay đổi này, Android đã chuyển từ việc thực thi trên một số miền quan trọng hạn chế ( installd , netd , voldzygote ) sang mọi thứ (hơn 60 miền). Đặc biệt:

  • Mọi thứ đều ở chế độ thực thi trong Android 5.x trở lên.
  • Không có quy trình nào khác ngoài init nên chạy trong miền init .
  • Bất kỳ từ chối chung nào (đối với block_device , socket_device , default_service ) chỉ ra rằng thiết bị cần một miền đặc biệt.

Android 6.0 đã củng cố hệ thống bằng cách giảm bớt sự cho phép trong chính sách của chúng tôi để bao gồm cách ly tốt hơn giữa người dùng, lọc IOCTL, giảm mối đe dọa từ các dịch vụ bị lộ, thắt chặt hơn nữa các miền SELinux và truy cập cực kỳ hạn chế /proc .

Cấu hình SELinux đã cập nhật Android 7.0 để khóa hộp cát ứng dụng hơn nữa và giảm bề mặt tấn công. Bản phát hành này cũng đã chia nhỏ ngăn xếp máy chủ trung gian nguyên khối thành các quy trình nhỏ hơn để giảm phạm vi quyền của chúng. Để biết thêm chi tiết, hãy xem Bảo vệ Android với nhiều lớp bảo vệ nhân Linux hơnLàm cứng ngăn xếp phương tiện .

Android 8.0 đã cập nhật SELinux để hoạt động với Treble , giúp tách mã nhà cung cấp cấp thấp hơn khỏi khung hệ thống Android. Bản phát hành này đã cập nhật chính sách SELinux để cho phép nhà sản xuất thiết bị và nhà cung cấp SOC cập nhật các phần của chính sách, xây dựng hình ảnh của họ (nhà vendor.img , boot.img , v.v.), sau đó cập nhật những hình ảnh đó độc lập với nền tảng hoặc ngược lại.

Mặc dù có thể có phiên bản nền tảng (khung) cao hơn / mới hơn chạy trên thiết bị, nhưng trường hợp ngược lại không được hỗ trợ; hình ảnh nhà cung cấp ( vendor.img/odm.img ) không được có phiên bản mới hơn nền tảng ( system.img ). Vì vậy, phiên bản nền tảng mới hơn có thể gây ra các vấn đề tương thích với SELinux vì chính sách SELinux nền tảng ở phiên bản mới hơn các phần của chính sách SELinux của nhà cung cấp. Mô hình Android 8.0 cung cấp một phương pháp duy trì tính tương thích để ngăn chặn các OTA đồng thời không cần thiết.

Tài nguyên bổ sung

Để được trợ giúp xây dựng các chính sách SELinux hữu ích, hãy tham khảo các tài nguyên sau: