Android 4.4限制Root許可權的邏輯

來源:互聯網
上載者:User

標籤:android   root   su   許可權   


android  4.4 版本後,su 許可權嚴重被限制, 如無法直接存取data 地區,無法直接remount system image, 無法設定system property。


Google 不遺餘力的提高android系統的安全性, 而針對su 這個即令人恨,又令人愛的命令,就痛下殺手。主要體現在三個方面:


1. 限制user 版本adbd process 的capabilities bound set。迴圈CAPBSET_DROP 動作,將Process的root capabilities 進行了強行限制。僅僅保留了CAP_SETUID, CAP_SETGID 這兩項,用於run-as使用,可參考源碼中system/core/adb/adb.c 中的drop_capabilities_bounding_set_if_need 函數。這樣導致的情況是,在user 版本中usb debug 的su 受到極大的限制,僅僅能夠類比對應的uid/gid,而無法拿去真正的root 許可權。


2. 限制所有app 的capabilities bound set, 在android 4.4 上,zygote fork app 時,特意對所有fork 出來的子進程,進行了CAPBSET_DROP 動作,將Process 的root capabilities 進行了強行限制。 使得即使這些APK 徒有Root 許可權,而無真實的capabilites.

這樣導致的情況是, app 執行su 時,其許可權受到了嚴格的管控,比如無法逃脫DAC 許可權管控。但因為依舊具有root uid/gid, 所以在framework 層的permission 限制上依舊暢通無阻。


3. SElinux 許可權限制。 在user 版本上,沒有匯入有效SElinux policy, 這樣一旦本身受SElinux 限制的process 使用su 時,同樣會受到SElinux 的限制。 目前只有4個process 會受到此影響,即zygote, netd, installd, vold.消除這種限制的手法即是external/sepolicy/android.mk 裡面的

ifeq ($(TARGET_BUILD_VARIANT),user)BOARD_SEPOLICY_IGNORE+=external/sepolicy/su.teelseBOARD_SEPOLICY_IGNORE+=external/sepolicy/su_user.teendif


更新成:
ifeq ($(TARGET_BUILD_VARIANT),user)BOARD_SEPOLICY_IGNORE+=external/sepolicy/su_user.teelseBOARD_SEPOLICY_IGNORE+=external/sepolicy/su_user.teendif



轉載請註明出處:周木水的CSDN部落格 http://blog.csdn.net/zhoumushui

我的GitHub:周木水的GitHub https://github.com/zhoumushui



Android 4.4限制Root許可權的邏輯

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.