Thực tế là nguy hiểm như thế nào khi Selinux ở chế độ của Perm Permive? Tôi nên cảnh giác với điều gì?


14

Tôi đã cài đặt một bản ROM nhất định đi kèm với SELinux ở chế độ "Cho phép". Đây là ROM duy nhất (tốt) phù hợp với thiết bị của tôi và không có cách nào để thay đổi trạng thái của SELinux.

Bây giờ tôi không thực sự chắc chắn hậu quả của một quyết định như vậy là gì và sẽ rất vui nếu ai đó có thể giải thích cho tôi (tôi đã googled nó và biết nó là gì về mặt lý thuyết ... chỉ là không thực tế). ROM đã nói có gốc của nó là "bị vô hiệu hóa" vì vậy thiết bị được cho là không được phân phối nhưng làm thế nào nó phù hợp với SELinux thì tôi không chắc.


Bạn có tích cực rằng "không có cách nào để thay đổi trạng thái của SELinux" không? Bạn đã thử phát hành setenforce 1từ trình giả lập thiết bị đầu cuối (như root) chưa?
Marc.2377

Chà, tôi sẽ nghiên cứu thêm một chút về điều đó, nhưng vâng tôi khá chắc chắn do hướng dẫn của người tạo ROM. Tôi không phải là người mới nên tôi không chắc chắn 100% tại sao (vẫn cần nghiên cứu) nhưng lý do đã nêu là bộ tải khởi động bị khóa ... forum.xda-developers.com/amazon-fire/orig-development/
j.d'oh

Câu trả lời:


12

TL; DR: Hãy thoải mái nhảy thẳng đến kết luận ở phía dưới nếu bạn thích :)!

Mục tiêu của SELinux là ngăn chặn sự leo thang đặc quyền bằng cách thực thi chính sách bắt buộc nhằm hạn chế các hành động có thể có từ cả người dùng không có đặc quyền và đặc quyền.

Thuật ngữ "người dùng" ở đây cũng bao gồm bất kỳ quy trình nào đang chạy trên thiết bị, bất kể nó có liên quan trực tiếp đến hành động của người dùng vật lý (con người, bạn;)), vì mọi quy trình đang chạy bằng tài khoản "người dùng" của hệ thống.

Trong lịch sử, các quyền trên các hệ thống dựa trên Unix được xử lý bằng cách sử dụng hệ thống được gọi là hệ thống Kiểm soát truy cập tùy ý (DAC). Trong mô hình này:

  • Các tài nguyên như tệp có chủ sở hữu có thể xác định quyền truy cập đối với tài nguyên mà họ sở hữu: điều này cho phép họ quyết định liệu một tài nguyên cụ thể có phải là riêng tư hay không (chỉ chủ sở hữu mới có thể truy cập nó) hoặc nếu nó được chia sẻ với một số người dùng khác.
  • Trên hết, bạn có siêu người dùng (được gọi là rootcác hệ thống dựa trên Unix) là người dùng quản trị và có quyền truy cập vào mọi thứ trên hệ thống. Tài khoản này có thể được sử dụng tương tác bởi một người (thường là quản trị viên hệ thống) để bảo trì hoặc sửa chữa thiết bị, nhưng thông thường tài khoản này sẽ chủ yếu được sử dụng bởi các dịch vụ nền hoặc cấp thấp yêu cầu cấp đặc quyền như vậy: trình điều khiển thiết bị, dịch vụ cấu hình mạng, dịch vụ cần truy cập các tệp từ mọi người dùng hoặc xử lý giao tiếp giữa người dùng nội bộ.

Điều này là rất tốt đẹp và đã cung cấp một bảo mật tốt. Tuy nhiên, những gì về hoàn cảnh như:

  1. Điều gì sẽ xảy ra nếu một lỗi trong dịch vụ đang chạy rootđược tìm thấy sẽ cho phép kẻ tấn công lừa dịch vụ đó chạy một số mã tùy ý? Kẻ tấn công như vậy sẽ có được quyền truy cập hoàn toàn vào thiết bị. Để đưa ra một số ví dụ cụ thể, lỗi này có thể được kích hoạt bằng cách gửi thông tin cấu hình mạng được chế tạo đặc biệt ( DHCP ) hoặc MMS đến điện thoại.
  2. Điều gì sẽ xảy ra nếu một số người dùng không bảo vệ tài nguyên cá nhân một cách chính xác? Sau đó, các tài nguyên này có thể bị truy cập độc hại (đọc, thậm chí có thể sửa đổi hoặc xóa) bởi những người dùng không có đặc quyền khác. Đây thường là những gì bạn có khi một ứng dụng độc hại đang chạy trên điện thoại của bạn (không có vấn đề gì nếu bạn bị lừa cài đặt nó hoặc nếu nó tự đến đây bằng cách sử dụng một lỗi trong một ứng dụng không được ưu tiên khác, trình duyệt hoặc ứng dụng thư cho ví dụ) và ứng dụng độc hại này cố gắng truy cập trực tiếp vào dữ liệu hoặc vị trí lưu trữ của ứng dụng khác (nó có thể làm như vậy để truy cập dữ liệu không thể truy cập thông thường hoặc tự cài đặt ở một số nơi để làm cho việc xóa nó khó hơn).

Đây là SELinux.

SELinux là một hệ thống Kiểm soát truy cập bắt buộc (MAC). Mặc dù trong hệ thống DAC được mô tả trước đây, người dùng có trách nhiệm thiết lập quyền phù hợp với tài nguyên của mình, với hệ thống MAC, chính sách toàn hệ thống (được cung cấp với hệ điều hành) được áp dụng cho cả người dùng đặc quyền và không có đặc quyền.

Điều này giải quyết hai vấn đề được đề cập ở trên theo các cách sau:

  1. Như tôi đã nói, chính sách này cũng áp dụng cho người dùng đặc quyền. Điều này có nghĩa là, với chính sách được thiết kế phù hợp, một dịch vụ được thiết kế để xử lý cấu hình mạng của thiết bị sẽ không thể làm gì khác: chẳng hạn, nó sẽ không có quyền truy cập SMS và SMS xử lý dịch vụ sẽ không có quyền truy cập vào cấu hình mạng và không ai trong số họ sẽ có quyền truy cập vào dữ liệu của người dùng, mặc dù thực tế là cả hai đang chạy bằng tài khoản siêu người dùng.
  2. Android gần đây đã bao gồm một tính năng nhiều người dùng được thi hành bởi SELinux, ngăn mọi người dùng truy cập dữ liệu của người dùng khác. Nhưng ngoài ra, chính sách của SELinux cũng chịu trách nhiệm mô tả hành vi của các ứng dụng được phép và rất có thể ngay cả khi một số tài nguyên không được bảo vệ đúng cách bằng hệ thống DAC, Selinux sẽ giải cứu và vẫn ngăn ứng dụng độc hại truy cập trực tiếp vào chúng.

Các hệ thống DAC và MAC không loại trừ lẫn nhau, ngược lại, hệ thống MAC (SELinux) hoạt động như một lớp bảo vệ thứ hai sau hệ thống DAC (các quyền giống như Unix truyền thống). Công việc của SELinux là chặn mọi hoạt động trái với chính sách, chỉ đưa ra hệ thống DAC, nếu không sẽ được chấp nhận.

Điều khó khăn là chính sách như vậy có thể rất phức tạp để viết: nó thực sự phải bao gồm mọi thành phần của thiết bị cho mọi mục đích sử dụng có thể trong mọi tình huống. Trong thực tế, không có vấn đề gì nếu một số hành động có thể là hợp pháp trong tình huống của bạn: nếu nó không nằm trong chính sách, nó bị cấm . Do đó, các chính sách được thiết kế kém có thể có các hậu quả ngẫu nhiên, như sự cố ứng dụng, chức năng không thể sử dụng, v.v.

Đó là lý do tại sao các phiên bản đầu tiên của Android vận chuyển SELinux đưa nó vào chế độ "Cho phép" theo mặc định. Trong chế độ này, SELinux sẽ ghi lại các vi phạm chính sách, nhưng nó sẽ không cố gắng chặn hoạt động liên quan. Bằng cách phân tích các tệp nhật ký kết quả, có thể sửa và cải thiện chính sách cho đến khi vi phạm chính sách duy nhất còn lại thực sự là hành vi độc hại hoặc không mong muốn. Tại thời điểm này, SELinux có thể được chuyển sang chế độ "Thực thi": giờ đây nó sẽ không chỉ đăng nhập mà còn chặn mọi hành động vi phạm.

Phần kết luận

SELinux là một kỹ thuật giảm thiểu. Nó không ngăn kẻ tấn công xâm nhập vào điện thoại của bạn, nhưng nó đảm bảo rằng một khi ở đó chúng có thể làm ít nhất có thể, lý tưởng là không có gì hữu ích do đó loại bỏ bất kỳ mối quan tâm nào về việc tấn công điện thoại ngay từ đầu.

ROM càng cũ, số lỗi bảo mật sẽ mở truy cập như vậy càng lớn. SELinux sẽ là một cách hiệu quả để giữ an toàn tối thiểu mặc dù các lỗ hổng đã biết này, tuy nhiên để hoạt động đúng thì SELinux phụ thuộc vào một chính sách phức tạp.

Nếu ROM của bạn được cung cấp với SELinux theo chế độ "Cho phép" theo mặc định, điều này có thể có nghĩa là chính sách mà nó chứa không đủ tin cậy để được chuyển sang chế độ "Thực thi" một cách an toàn.

Nếu bạn đủ kỹ thuật và có quyền truy cập vào nhật ký điện thoại ( dmesgít nhất, nhưng thông thường chúng cũng được sao chép vào logcat: có những ứng dụng cho phép xem cái sau nhưng tùy thuộc vào phiên bản Android của bạn, chúng có thể yêu cầu quyền truy cập root), bạn có thể kiểm tra xem bạn tìm thấy các mục "avc": đây là những thông báo cho bạn biết rằng SELinux vừa phát hiện ra một hành động đi ngược lại chính sách.

Dưới đây là một ví dụ về mục nhập như vậy được lấy từ trang web của CyanogenMod :

type=AVC msg=audit(1363289005.532:184): avc: denied { read } for pid=29199 comm="Trace" 
name="online" dev="sysfs" ino=30 scontext=staff_u:staff_r:googletalk_plugin_t 
tcontext=system_u:object_r:sysfs_t tclass=file

Nếu không có, chỉ một vài trong số họ hoặc vì bất kỳ lý do nào bạn nghĩ rằng họ có thể không ngăn bạn sử dụng điện thoại, bạn có thể thử chuyển SELinux sang chế độ "Thực thi". Trong các ROM CyanogenMod cũ hơn, điều này thật dễ dàng và có thể chỉ đơn giản là sử dụng một tùy chọn ẩn trong GUI (không cần root điện thoại hoặc cài đặt bất kỳ ứng dụng cụ thể nào), tôi không biết các ROM khác có cung cấp tính năng tương tự không nhưng vì bạn đã sử dụng CyanogenMod Tôi cho rằng bạn có thể may mắn;).


@ j.d'oh: Nhận xét không dành cho thảo luận mở rộng, tôi đã tạo một phòng trò chuyện mới để cố gắng giải quyết các câu hỏi của bạn.
WhiteWinterWolf
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.