Có thiết bị Google nào hỗ trợ các khả năng trong kernel mặc định của họ không?


14

Nếu tôi không root hệ thống (không thực hiện sửa đổi để /systemphân vùng) một thiết bị Nexus, tôi có thể đặt khả năng trên các tệp thực thi mà không thay đổi nhị phân hạt nhân ban đầu không?

Tôi thường muốn quản lý các tập tin mà không bị hạn chế từ thiết bị đầu cuối của mình (yêu cầu CAP_DAC_READ_SEARCH) . Tuy nhiên, tôi cũng muốn không sử dụng superuser.
Những thứ bắt buộc là các công cụ để thiết lập giới hạn cùng với hỗ trợ kernel để sử dụng chúng (nó không phụ thuộc vào những thứ khác trong không gian người dùng) .

Vấn đề là, tôi không sở hữu thiết bị như vậy. Vì vậy, tôi không thể biết nếu nó sẽ làm việc trên bất kỳ Nexus 5X Nexus 6P Nexus 9 Pixel C.


2
Tôi cũng không thể tìm thấy trình giả lập nexus từ
user2284570

Tôi nghi ngờ điều đó ... Vì Android sử dụng libion ​​Bionic chứ không phải thư viện GNU libc (glibc) tiêu chuẩn, nên nó thậm chí không gần với tuân thủ POSIX. Bạn có thể biên dịch kernel của mình bằng một libc khác như CrystaX NDK thay vì Bionic, nhưng tôi không biết liệu các tính năng đó có ở trong đó không.
acejavelin

@acejavelin: phần userland chỉ được yêu cầu để thiết lập các thuộc tính mở rộng có khả năng. Mọi thứ khác là phía hạt nhân. Tôi chỉ nhận thấy /system/bin/pinglệnh không được thiết lập trên thiết bị samsung thực sự của tôi, gợi ý CAP_NET_RAW. Tuy nhiên, tôi sẽ không root thiết bị thực và tôi không biết công cụ nào tôi có thể sử dụng để xem thông tin liên quan, vì vậy tôi không thể kiểm tra.
dùng2284570

Tại sao bạn không root thiết bị Nexus? Nó được dành cho điều đó và không làm mất hiệu lực bảo hành của bạn. Rất đơn giản để khôi phục bất kỳ thiết bị Nexus nào về trạng thái mặc định, không được phân bổ và khóa, thiết bị về cơ bản là không thể truy cập được.
acejavelin

@acejavelin: Tôi không sở hữu một thiết bị nexus Mục đích của tôi là nghiên cứu bảo mật và google chỉ thưởng cho các thiết bị của chính nó. Vì vậy, tôi cần biết liệu kernel của một trong các thiết bị trong câu hỏi của tôi có hỗ trợ sử dụng khả năng xattr không. Những gì tôi thấy trên tab galaxy của tôi có lẽ chỉ liên quan đến samsung. Nếu tôi không liên quan đến root trong câu hỏi của tôi, nó có thể bị đóng là không rõ ràng .
dùng2284570

Câu trả lời:


1

Mặc dù câu hỏi đã cũ nhưng nó vẫn xuất hiện trên đầu câu hỏi chưa được trả lời (thẻ của tôi) . Vì vậy, tôi nghĩ rằng tôi nên trả lời này :)

HOS TRỢ CỦA AOSP CHO NĂNG LỰC:

Câu hỏi cụ thể là về các thiết bị của Google, tôi chưa bao giờ sử dụng thiết bị Google. Tuy nhiên, điều tôi có thể nói chắc chắn là các khả năng của Linux (quy trình) phải được kích hoạt trên hầu hết các thiết bị (nếu không phải tất cả) chạy ở mức thấp như Android 1.6. Tham chiếu được tìm thấy trong initsystem_server, cả hai thành phần chính của AOSP. Ví dụ, trong Android 4.2 installd- một thành phần cốt lõi khác - được tạo ra để chạy với khả năng bị bỏ.

Các khả năng của hệ thống tệp là một trong những Cải tiến bảo mật chính trong Android 4.3 đã loại bỏ set-uid/ set-gidkhỏi các tệp nhị phân như run-as, thiết lập các khả năng của tệp trên chúng. Điều này gây ra những thay đổi mang tính cách mạng trong hành trình root của Android.

Hỗ trợ cho các khả năng của Ambient đã được thêm vào Android 8, điều này không khuyến khích việc sử dụng các khả năng của tệp:

Ngược lại, các khả năng của tệp có rủi ro bảo mật do mọi quá trình thực thi tệp có khả năng tệp sẽ có thể đạt được các khả năng đó.

Nhiều initdịch vụ phụ thuộc vào họ storaged, ví dụ , bao gồm cả dịch vụ sshddnscrypt-proxydịch vụ của tôi .

HPORT TRỢ CỦA NỀN TẢNG CHO NĂNG LỰC:

Đến với phần kernel, việc xây dựng kernel không có khả năng không phải là tùy chọn:

Từ kernel 2.5.27 đến kernel 2.6.26, các khả năng là một thành phần kernel tùy chọn và có thể được bật / tắt thông qua tùy chọn cấu hình kernel CONFIG_SECURITY_CAPABIL khoáng .

Và:

Trong các hạt nhân trước Linux 2.6.33, các khả năng của tệp là một tính năng tùy chọn có thể định cấu hình thông qua tùy chọn CONFIG_SECURITY_FILE_CAPABILEER . Kể từ Linux 2.6.33, tùy chọn cấu hình đã bị xóa và các khả năng của tệp luôn là một phần của kernel.

Phiên bản kernel phổ biến lâu đời nhất trên kho Android là 2.6,39 bao gồm hỗ trợ cho khả năng của tệp.

Hỗ trợ cho các khả năng của hệ thống tập tin ở phía kernel phải bị trì hoãn từ một số OEM nhưng chúng phải chuyển đổi, vì nếu không các chức năng sẽ bị hỏng. Chẳng hạn surfaceflinger( nhà soạn nhạc bề mặt của Android ) sẽ không hoạt động nếu không có khả năng tệp kể từ Android 7.1.

Mainline Linux kernel 4.3 đã được vá trong trong Sep'15 cho khả năng (quá trình) Ambient, backported Android kernel 3.18 và 4.1 trong năm 2016. Vì vậy, họ nhất thiết phải là một phần của kernel.

PHẦN KẾT LUẬN:

Trên các bản phân phối Linux, rất ít chương trình sử dụng các khả năng của Linux. Mặc dù có pam_cap, chủ yếu là (hoặc tất cả?) Distro vẫn sử dụng set-uidtrên su, sudo, ping, mount, passwdvà vân vân. Nhưng trên các khả năng của Android được tích hợp sâu trong các dịch vụ khung và cốt lõi. Loại bỏ chúng sẽ yêu cầu chỉnh sửa hàng trăm hoặc có thể là hàng ngàn dòng trong AOSP và nguồn kernel. Không có nghĩa là một OEM (đặc biệt là Google, người đã phát triển AOSP và nhân Linux đã sửa đổi cho Android) không sử dụng tính năng bảo mật miễn phí này khi nó có sẵn trong nhân Android. Đây là một tính năng liên quan đến hệ điều hành thuần túy, không yêu cầu bất kỳ hỗ trợ phần cứng bổ sung nào. Vì vậy, bất kỳ điện thoại từ bất kỳ nhà sản xuất phải có khả năng hỗ trợ.


CÂU HỎI:

Tôi có thể thiết lập các khả năng trên các tệp thực thi mà không thay đổi nhị phân kernel gốc không?

Vâng, bạn phải có.

Những thứ bắt buộc là công cụ để thiết lập mũ ...

Tôi đã được sử dụng capsh, getcap, setcap, getpcapstừ libcapnetcap, pscaptừ libcap-ngmà không cần bất kỳ vấn đề. Nhưng tôi thích các khả năng của Ambient, chúng dễ cấu hình và không phụ thuộc vào bất kỳ tính năng nào của hệ thống tệp như Thuộc tính mở rộng như trong trường hợp khả năng của tệp. Bạn cũng có thể sử dụng listxattr, getxattr, setxattrremovexattrcác công cụ từ xattr_syscall_wrapperđể thao tác security.capabilityhoặc bất kỳ xattr khác trực tiếp.

Từ bình luận của bạn:

Tôi chỉ nhận thấy /system/bin/pinglệnh không có setuidtrên thiết bị Samsung thực sự của mình, gợi ýCAP_NET_RAW

Android của ping không có set-uidcũng không CAP_NET_RAW. Nó tạo ra một ổ cắm không phải RAW đặc biệt IPPROTO_ICMP- không giống như IPPROTO_RAW- không yêu cầu bất kỳ đặc quyền nào.


THÊM TÀI LIỆU THAM KHẢO:

Ngoài hơn 10 tài liệu tham khảo được đưa ra ở trên, đây là một vài phần khác của mã AOSP hỗ trợ và sử dụng các khả năng của Linux:

  • Thành phần cốt lõi: Bionic libc, init, trusty(OS)
  • Các thành phần bên ngoài : libcap ,libcap-ng
  • Daemon / dịch vụ: zygote (ứng dụng chia hai và system_server), hostapd, wpa_supplicant, dnsmasq, logd, netd( NetLinkgiám đốc, DNS tư nhân), debuggerd(thử nghiệm), sdcarddaemon, performanced, incidentd, mtpd, traced_probes(Perfetto), racoon(IPSec), wificond, một số daemon HAL bao gồm rild.
  • Thực thi: reboot (init), dumpstate, tcpdump, strace, iputils( ping, traceroutevv)
  • Minijail: Một công cụ và thư viện hộp cát chuyên dụng xoay quanh các khả năng. adbdsử dụng thư viện này để bỏ đặc quyền.
  • SELinux sử dụng capabilitylớp để cấp / từ chối các khả năng cho các miền.

Nó kết luận rằng Android phụ thuộc nhiều vào khả năng của Linux, đây không phải là một tính năng ít được sử dụng .


LIÊN QUAN:


Không trả lời bất cứ điều gì cả. Tất cả mọi thứ bạn nêu được biết. Vấn đề của câu hỏi là vì nó ít được sử dụng là các thiết bị mang nhãn hiệu Google bao gồm nó.
dùng2284570
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.