1. 被ROOT了怎么办
2. SELinux
3. SEAndroid
4. JB(4.3) MR2的漏洞弥补
-------------------------------------------
-------------------------------------------
1. 被ROOT了怎么办
恶意应用获得了ROOT权限 --- 现在我们是无能为力的
我们想要做到的: 即便一个进程的EUID==ROOT,仍然不能为所欲为
2. SELinux
DAC()模式:主体(EUID==ROOT)对它所属的对象和运行的程序拥有所有的控制权 -- 可以做任何事
MAC()模式:SELinux基于的安全策略。管理员管理访问控制,管理员指定策略,用户不能改变它,任何主体不能改变 -- 只能做安全策略授权的,不能为所欲为
3. SEAndroid
* 就是将原本运行到Linux系统上的SELinux, 移植到了 Android上
* 在SELinux的基础上,做了许多针对Android的安全提高,例如把Binder IPC、Socket、Properties访问控制也加入到了SEAndroid的控制中
SEAndroid的核心概念
即便恶意应用篡得了ROOT权限,仍然只能做有限的应用,不能为所欲为
4. JB(4.3) MR2的漏洞弥补
在JB MR2之前,APK内部可以通过Java的Runtime执行一个具有Root-setUID的可执行文件而提升EffectiveUID 来进行一些特权操作,典型的就是Root包中的su就是这个原理
JB(4.3) MR2修补了这个漏洞
每个apk进程在创建完后,都会执行如下这段代码,将CAPBSET全部清空
后果: 新进程的Effecttive(Capability Sets)为空,所以CAP_SETUID就没了,那么系统基于Root-setUID的可执行文件来提升EUID到ROOT当然就不允许了。所以新进程的EUID=RUID == APK的RUID