android study 15 sandbox

Author Avatar
Xzhah 8月 04, 2022
  • 在其它设备中阅读本文章

android安全模型

android沙箱模型

​ 对于android来说,沙箱模型就是进程隔离和权限管理那一套。每个android应用在安装时被PMS赋予独特的用户标志(UID),一个用户ID识别一个应用程序,根据这个id来决定应该允许还是限制程序访问设备资源。每个应用程序都独立运行在虚拟机的沙箱进程中。

​ android沙箱可以用来实现应用程序之间的分离,以允许或拒绝一个应用程序访问资源,为了达到这个目的,android会使用一些Linux实用工具,比如与用户相关的用户和组ID,以及权限,来实现程序被允许的操作。

​ Android应用进程运行在各自的进程上,被分配唯一的用户ID,运行在基本沙箱进程中的应用程序没有被分配权限,因而防止了此类应用访问资源。但是Android程序可以通过manifest来申请权限,或者与其他受信任的应用运行在同一进程中,从而共享其数据和代码。

​ 不同应用想在一个进程中,首先使用相同私钥签名,然后在manifest里给他们申请分配相同的用户id,这可以通过用相同的值/名定义 manifest 属性 android:sharedUserId 来做到。

Android系统分区与加载

​ Android设备的分区包括系统分区,数据分区,Cache分区,以及SD卡分区,具体如下:

​ 1.系统分区通常是只读分区,里面有系统内核,系统函数库,应用框架,系统应用程序等。是厂商在出厂时写入。当出现安全问题时,可以进入安全模式,只加载系统分区不加载数据分区,隔离第三方应用带来的风险。

​ /system/app目录存放系统自带应用

​ /system/lib存放系统库函数

​ /system/bin与/system/xbin存放系统管理命令

​ /system/framework存放安卓框架的jar文件

​ 2.数据分区用来存储用户数据与应用程序,出现安全问题时可以不加载数据区,或者直接将数据区格式化。

​ /data/data存放apk程序的数据,每个APK在/data/data/apk-package目录下有自己专属目录,只能在该目录中进行操作。

​ /data/app存放用户安装的apk

​ /data/system下存放了packages.xml,packages.list,appwidgets.xml等文件,记录安装的软件以及widget信息。

​ /data/misc下存放了WIFI账号,VPN设置等信息

References

https://cloud.tencent.com/developer/article/1799705

http://images.china-pub.com/ebook3800001-3805000/3800568/ch02.pdf

https://github.com/cckenny/2020_autumn_mobile_security_interview/blob/main/%E7%A7%BB%E5%8A%A8%E5%AE%89%E5%85%A8.md