기본 커널에서 기능을 지원하는 Google 기기가 있습니까?


14

/systemNexus 장치 를 시스템리스 루트 ( 파티션으로 수정하지 않은 경우 )로 사용 하면 원래 커널 바이너리를 변경하지 않고도 실행 파일에서 기능 을 설정할 수 있습니까?

종종 터미널에서 제한없이 파일을 관리하려고합니다 (필수 CAP_DAC_READ_SEARCH) . 그러나 수퍼 유저도 사용하고 싶지 않습니다.
필요한 것은 커널 지원에 따라 캡을 설정하기위한 도구입니다 (다른 사용자 공간에 의존하지 않음) .

문제는 그러한 장치를 소유하지 않는다는 것입니다. 그래서 그것이에 작동하는지 알 수 없습니다 Nexus 5X Nexus 6P Nexus 9 Pixel C.


2
또한 넥서스 에뮬레이터를 찾을 수 없었습니다…
user2284570

의심합니다 ... Android는 표준 GNU libc (glibc) 라이브러리가 아닌 Bionic libc를 사용하기 때문에 POSIX와 호환되지 않습니다. Bionic 대신 CrystaX NDK와 같은 다른 libc를 사용하여 자신의 커널을 컴파일 할 수는 있지만 해당 기능이 그 안에 있는지는 알 수 없습니다.
acejavelin

@acejavelin : userland 부분은 기능을 포함하는 확장 된 속성을 설정하는 데만 필요합니다. 다른 모든 것은 커널 측면입니다. 방금 /system/bin/ping실제 삼성 기기 에서 명령이 설정되지 않은 것으로 나타났습니다 CAP_NET_RAW. 그러나 실제 장치를 루팅하지 않으며 관련 정보를 확인하는 데 사용할 수있는 도구를 모르므로 확인할 수 없습니다.
user2284570

Nexus 기기를 루팅하지 않는 이유는 무엇인가요? 이를위한 것이며 보증을 무효화하지 않습니다. 모든 Nexus 기기를 기본, 루팅 및 잠금 상태로 복원하는 것은 매우 간단합니다. 기기는 기본적으로 차단할 수 없습니다.
acejavelin

@acejavelin : 넥서스 장치를 소유하고 있지 않습니다… 저의 목표는 보안 연구와 구글이 자체 장치에 대해서만 보상하는 것입니다. 따라서 제 질문에있는 장치 중 하나의 커널이 xattr 기능을 사용하여 지원하는지 알아야합니다. 내 은하 탭에서보고있는 것은 아마도 삼성 관련 일 것입니다. 내 질문에 뿌리를 내리지 않으면 명확하지 않은 것으로 닫힐 수 있습니다 .
user2284570

답변:


1

질문은 오래되었지만 계속 위에 표시됩니다. 답변되지 않은 (내 태그) 질문. 그래서 나는 이것에 대답해야한다고 생각합니다 :)

기능에 대한 AOSP의 지원 :

질문은 Google 기기에 관한 것입니다. Google 기기를 사용한 적이 없습니다. 그러나 확실히 말할 수있는 것은 Linux (프로세스) 기능이 Android 1.6만큼 낮게 실행되는 대부분의 장치 (모두는 아님)에서 활성화되어 있어야한다는 것입니다. AOSP의 주요 구성 요소 인 initsystem_server에 모두 참조가 있습니다. 예를 들어 Android 4.2에서는 installd또 다른 핵심 구성 요소 인 기능이 삭제 된 상태로 실행되었습니다.

파일 시스템 기능Android 4.3 의 주요 보안 향상 기능 중 하나로 파일 기능을 설정하는 등의 이진 파일 을 제거 set-uid하거나 제거 했습니다. 이로 인해 안드로이드의 루팅 여정 에 혁신적인 변화 가 일어 났습니다.set-gidrun-as

파일 기능 사용 을 권장하지 않는 Ambient 기능 에 대한 지원 이 Android 8에 추가되었습니다 .

파일 기능이있는 파일을 실행하는 모든 프로세스가 이러한 기능을 얻을 수 있으므로 파일 기능은 보안 위험을 초래합니다.

init예를 들어 storaged내 서비스 sshddnscrypt-proxy서비스를 포함하여 많은 서비스가이 서비스에 의존 합니다.

기능에 대한 커널 지원 :

기능 이없는 커널을 구축하는 것은 선택 사항이 아닙니다 :

커널 2.5.27에서 커널 2.6.26까지 기능은 선택적 커널 구성 요소였으며 CONFIG_SECURITY_CAPABILITIES 커널 구성 옵션을 통해 활성화 / 비활성화 할 수 있습니다 .

과:

Linux 2.6.33 이전의 커널에서 파일 기능은 CONFIG_SECURITY_FILE_CAPABILITIES 옵션을 통해 구성 할 수있는 선택적 기능이었습니다 . Linux 2.6.33부터 구성 옵션이 제거되었으며 파일 기능은 항상 커널의 일부입니다.

안드로이드 저장소에서 가장 오래된 일반적인 커널 버전은 2.6.39입니다 포함 너무 파일 기능을 지원합니다.

커널 측의 파일 시스템 기능에 대한 지원 은 일부 OEM에서 지연 되었지만 기능이 손상 될 수 있기 때문에 전환해야했습니다. 예를 들어 surfaceflinger(Android의 Surface Composer )는 Android 7.1 이후 파일 기능이 없으면 작동하지 않습니다.

Mainline Linux kernel 4.3은 2016 년 9 월 15 일 Ambient (프로세스) 기능을 위해 패치 되어 2016 년에 Android 커널 3.18 및 4.1로 백 포트 되었습니다. 따라서 커널의 일부입니다.

결론:

Linux 배포판에서 아주 적은 프로그램이 Linux 기능을 사용합니다. 가 있지만 pam_cap대부분 (또는 모든?) 배포판은 여전히 사용 set-uidsu, sudo, ping, mount, passwd등. 그러나 Android 기능은 프레임 워크 및 핵심 서비스에 깊이 통합되어 있습니다. 그것들을 제거하려면 AOSP와 커널 소스에서 수백 줄을 편집하거나 수천 줄이 필요할 수 있습니다. OEM (특히 AOSP를 개발하고 Android 용 Linux 커널을 수정 한 Google)이 Android 커널에서 쉽게 사용할 수있는 경우이 무료 보안 기능 을 사용하지 않는 것은 이치에 맞지 않습니다 . 순수한 OS 관련 기능이며 추가 하드웨어 지원이 필요하지 않습니다. 따라서 모든 제조업체의 모든 전화는 기능을 지원해야합니다.


질문 :

원래 커널 바이너리를 변경하지 않고 실행 파일에서 기능을 설정할 수 있습니까?

그렇습니다.

필요한 것은 뚜껑을 설정하기위한 도구입니다 ...

내가 사용하고 capsh, getcap, setcap, getpcaps에서 libcapnetcap, pscap에서 libcap-ng아무 문제없이. 그러나 Ambient 기능을 선호합니다. 이러한 기능은 구성하기 쉽고 파일 기능의 경우와 같이 확장 속성 과 같은 파일 시스템 기능에 의존하지 않습니다 . , 및 도구를 사용 하여 조작 할 수도 있습니다 listxattr.getxattrsetxattrremovexattrxattr_syscall_wrappersecurity.capability 또는 기타에서 xattr 직접.

귀하의 의견에서 :

방금 /system/bin/ping명령이 setuid내 실제 삼성 장치에 없는 것으로 나타났습니다.CAP_NET_RAW

안드로이드의 도도 set-uid없다 CAP_NET_RAW. 특수한 RAW가 아닌 소켓 IPPROTO_ICMP을 만듭니다.이 소켓 은 달리 IPPROTO_RAW권한이 필요하지 않습니다.


추가 참조 :

위에 제공된 10 개 이상의 참조 외에도 Linux 기능을 지원하고 사용하는 AOSP 코드의 다른 부분이 있습니다.

  • 핵심 성분 : 바이오닉 libc, init, trusty(OS)
  • 외부 구성 요소 : libcap ,libcap-ng
  • 데몬 / 서비스 : zygote (포크 애플 리케이션과 system_server), hostapd, wpa_supplicant, dnsmasq, logd, netd( NetLink관리자, 개인 DNS), debuggerd(시험), sdcard데몬, performanced, incidentd, mtpd, traced_probes(PERFETTO), racoon(IPSec을) wificond를 포함 HAL 데몬의 수 rild.
  • 실행 파일 : reboot (초기화), dumpstate, tcpdump, strace, iputils( ping, traceroute등)
  • Minijail : 기능을 중심으로 한 전용 샌드 박싱 도구 및 라이브러리. adbd이 라이브러리를 사용하여 권한을 삭제합니다.
  • SELinuxcapability클래스를 사용 하여 도메인에 기능을 부여 / 거부합니다.

안드로이드는 리눅스 기능에 크게 의존하고 있으며, 거의 사용 되지 않는 기능이라고 결론 지었다 .


관련 :


전혀 대답하지 않습니다. 당신이 언급 한 모든 것이 알려져 있습니다. 의문의 포인트는 거의 사용되지 않기 때문에 Google 브랜드 기기에 포함되어 있다는 것입니다.
user2284570
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.