电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

詳解Android應用沙盒機制

瀏覽:3日期:2022-09-19 10:02:31
前言

Android使用沙盒來保護用戶不受惡意應用的侵害,同時也將應用隔離開來,防止他們互相訪問其數據,本文主要對Android應用沙盒中的幾種技術做簡要的總結。

一、Android應用DAC沙盒 稍微了解Android一點的人都知道,Android上的App并不像Linux上的用戶程序那樣,啟動應用的uid默認就是登錄用戶的uid,除非你使用sudo或者setuid等機制。而是每個Android應用都對應了一個uid,也就是一個用戶,通過Linux系統的DAC機制將應用的數據嚴格隔離開來。 Android并沒有使用/etc/passwd配置文件以及useradd、usermod和userdel等二進制來管理用戶,這些東西對Android來說過于復雜。實際上Android應用到uid的映射是由PackageManagerService完成的,也就是PMS,并且存儲在/data/system/packages.xml中。 將Android應用使用DAC隔離開之后,如果應用要訪問任何系統資源,便會被拒絕,所以Android設計了應用權限機制來向應用提供訪問系統資源的通道,同時保護系統資源不被濫用。 下面是在Pixel 2 XL (RP1A.201005.004.A1) 上面的一些例子

u:r:untrusted_app:s0:c161,c256,c512,c768 u0_a161 16613 887 14608676 86088 0 0 S com.google.android.apps.photosu:r:untrusted_app:s0:c138,c256,c512,c768 u0_a138 17204 888 1402772 138956 0 0 S com.android.chrome

可以看到相冊應用的用戶為u0_a161,而Chrome瀏覽器應用的用戶為u0_a138

二、Android應用權限

Android應用權限的核心類型分為四種:普通權限、危險權限、簽名權限、簽名或系統權限

權限類型 權限行為 普通權限(Normal) 普通權限是只需要在AndroidManifest.xml中聲明后就可以使用的權限。 危險權限(dangerous) 危險權限除了需要在AndroidManifest.xml中聲明之外,在Android 6.0或更高版本還需要使用動態權限API進行申請,并且用戶點擊同意之后才能使用;在Android 5.1以及更早版本,會在安裝時單獨列出危險權限以特別提醒用戶。注意,如果自定義權限設置為了危險權限,無論Android版本是多少都只是會在安裝時單獨列出危險權限。 簽名權限(signature) 簽名權限僅會授予給與定義這個權限的包相同簽名的應用。 簽名或系統權限(signatureOrSystem) signature|privileged的舊同義詞。簽名或系統權限與簽名權限唯一的區別就是,簽名或系統權限也允許授予給特權應用(priv_app),該字段現已棄用。

在自定義權限中,經常使用簽名權限來保護敏感的接口,使其只能被可信的應用調用——那些具備和定義權限者相同簽名的應用。

三、應用信息的存儲

應用信息的存儲上文已經提到,位于/data/system/packages.xml中,這里面存儲了應用的各種信息,下面是一個示例:

<package name='com.android.storagemanager' codePath='/system/priv-app/StorageManager' nativeLibraryPath='/system/priv-app/StorageManager/lib' publicFlags='541605445' privateFlags='8' ft='165151eba60' it='165151eba60' ut='165151eba60' version='29' user appUseNotchMode='0' appUseSideMode='1' hwExtraFlags='0' isOrphaned='true' forceDarkMode='2'> <sigs count='1' schemeVersion='1'><cert index='13' /> </sigs> <perms><item name='android.permission.USE_RESERVED_DISK' granted='true' flags='0' /><!-- ... --> </perms> <proper-signing-keyset identifier='3' /></package><package name='com.android.settings' codePath='/system/priv-app/Settings' nativeLibraryPath='/system/priv-app/Settings/lib' publicFlags='675823173' privateFlags='8' ft='165151eba60' it='165151eba60' ut='165151eba60' version='10010400' sharedUser appUseNotchMode='0' appUseSideMode='1' hwExtraFlags='0' isOrphaned='true' forceDarkMode='2'> <sigs count='1' schemeVersion='1'><cert index='0' /> </sigs> <perms><item name='android.permission.REAL_GET_TASKS' granted='true' flags='0' /><!-- ... --> </perms> <proper-signing-keyset identifier='1' /></package> 可以看到這個文件中存儲有很多內容,最關鍵的信息包括應用的uid、包名、各類路徑,以及定義和授予的權限。 例如StorageManager這個應用的uid是10036,而設置的uid是1000,也就是system的uid。 四、應用權限的映射 我們知道Android使用的是Linux內核,而在Linux的安全模型中,如果需要訪問系統資源,訪問系統資源的用戶和進程必須具備相應的權限。 Android如何將自行定義的Android權限映射到Linux層面的權限呢?答案就位于/etc/permissions/platform.xml中,下面是該文件的節選:

<permission name='android.permission.BLUETOOTH_ADMIN' > <group g /></permission><permission name='android.permission.BLUETOOTH' > <group g /></permission>

這里顯示的就是,Android的兩個藍牙權限,分別對應了net_bt_admin和net_bt兩個Linux組,在應用被授予相應的權限時,PMS會自動將應用uid加入這兩個組中,這樣應用就擁有了相應系統資源的訪問權限了。

五、應用的SELinux標簽

在Android引入SELinux之后,對應用權限的劃分更為細致,Android默認將應用分為四種:不可信應用、特權應用、平臺應用和系統應用。

SELinux標簽 標簽行為 不可信應用(untrusted_app) 不可信應用擁有最少的特權,訪問系統資源受到嚴格限制,所有用戶安裝的應用以及部分預裝應用都屬于此標簽。 特權應用(priv-app) 特權應用位于/system/priv-app目錄或OEM定義的其它目錄下,不可卸載,但不以system uid運行。 平臺應用(platform_app) 平臺應用具備平臺簽名,但不以system uid運行。除了AOSP和部分第三方ROM之外,幾乎所有的OEM都不會公開其平臺私鑰,所以一般情況下平臺應用只能是OEM提供的。 系統應用(system_app) 系統應用既具備平臺簽名,又以system uid運行(配置android:sharedUserId=”android.uid.system”)。使用system uid運行意味著它們可以不受應用沙盒的限制,并能訪問絕大部分Android框架中的系統資源。

下面是在Pixel 2 XL (RP1A.201005.004.A1) 上面的一些例子

可以得出以下結論:

Chrome在這臺手機上是untrusted_app 啟動器nexuslauncher在這臺手機上是priv_app systemui在這臺手機上是platform_app 設置settings在這臺手機上是system_app

顯然其中只有設置是以system uid運行的,其它進程使用的都是普通的應用uid。

六、Android應用MAC沙盒

上面所說的SELinux標簽,Android在源代碼中為它們定義了不同的SELinux政策,這便實現了MAC層面的沙盒增強。

以上就是詳解Android應用沙盒機制的詳細內容,更多關于Android應用沙盒機制的資料請關注好吧啦網其它相關文章!

標簽: Android
相關文章:
主站蜘蛛池模板: 湖南专升本-湖南省专升本报名-湖南统招专升本考试网 | 天长市晶耀仪表有限公司| 美国PARKER齿轮泵,美国PARKER柱塞泵,美国PARKER叶片泵,美国PARKER电磁阀,美国PARKER比例阀-上海维特锐实业发展有限公司二部 | 京马网,京马建站,网站定制,营销型网站建设,东莞建站,东莞网站建设-首页-京马网 | 飞歌臭氧发生器厂家_水处理臭氧发生器_十大臭氧消毒机品牌 | 带压开孔_带压堵漏_带压封堵-菏泽金升管道工程有限公司 | 南京技嘉环保科技有限公司-杀菌除臭剂|污水|垃圾|厕所|橡胶厂|化工厂|铸造厂除臭剂 | 济南玻璃安装_济南玻璃门_济南感应门_济南玻璃隔断_济南玻璃门维修_济南镜片安装_济南肯德基门_济南高隔间-济南凯轩鹏宇玻璃有限公司 | 发电机价格|发电机组价格|柴油发电机价格|柴油发电机组价格网 | 多物理场仿真软件_电磁仿真软件_EDA多物理场仿真软件 - 裕兴木兰 | NMRV减速机|铝合金减速机|蜗轮蜗杆减速机|NMRV减速机厂家-东莞市台机减速机有限公司 | 石英陶瓷,石英坩埚,二氧化硅陶瓷-淄博百特高新材料有限公司 | 博博会2021_中国博物馆及相关产品与技术博览会【博博会】 | 地埋式垃圾站厂家【佳星环保】小区压缩垃圾中转站转运站 | 玄米影院| 全自动翻转振荡器-浸出式水平振荡器厂家-土壤干燥箱价格-常州普天仪器 | pos机办理,智能/扫码/二维码/微信支付宝pos机-北京万汇通宝商贸有限公司 | 德国GMN轴承,GMN角接触球轴承,GMN单向轴承,GMN油封,GMN非接触式密封 | 金属管浮子流量计_金属转子流量计厂家-淮安润中仪表科技有限公司 | 高温高压釜(氢化反应釜)百科| 大型果蔬切片机-水果冬瓜削皮机-洗菜机切菜机-肇庆市凤翔餐饮设备有限公司 | 培训一点通 - 合肥驾校 - 合肥新亚驾校 - 合肥八一驾校 | 重庆网站建设,重庆网站设计,重庆网站制作,重庆seo,重庆做网站,重庆seo,重庆公众号运营,重庆小程序开发 | 耐磨陶瓷管道_除渣器厂家-淄博浩瀚陶瓷科技有限公司 | 长城人品牌官网| 钢绞线万能材料试验机-全自动恒应力两用机-混凝土恒应力压力试验机-北京科达京威科技发展有限公司 | 云南成人高考网| 招商帮-一站式网络营销服务|搜索营销推广|信息流推广|短视视频营销推广|互联网整合营销|网络推广代运营|招商帮企业招商好帮手 | 农业四情_农业气象站_田间小型气象站_智慧农业气象站-山东风途物联网 | 北京森语科技有限公司-模型制作专家-展览展示-沙盘模型设计制作-多媒体模型软硬件开发-三维地理信息交互沙盘 | 快速卷帘门_硬质快速卷帘门-西朗门业 | 沈阳庭院景观设计_私家花园_别墅庭院设计_阳台楼顶花园设计施工公司-【沈阳现代时园艺景观工程有限公司】 | 电车线(用于供电给电车的输电线路)-百科 | 领先的大模型技术与应用公司-中关村科金 | 深圳高新投三江工业消防解决方案提供厂家_服务商_园区智慧消防_储能消防解决方案服务商_高新投三江 | 2025福建平潭岛旅游攻略|蓝眼泪,景点,住宿攻略-趣平潭网 | 塑料造粒机「厂家直销」-莱州鑫瑞迪机械有限公司 | 芝麻黑-芝麻黑石材厂家-永峰石业 | 宁夏活性炭_防护活性炭_催化剂载体炭-宁夏恒辉活性炭有限公司 | 水上浮桥-游艇码头-浮动码头-游船码头-码瑞纳游艇码头工程 | 低粘度纤维素|混凝土灌浆料|有机硅憎水粉|聚羧酸减水剂-南京斯泰宝 |