启用SEAndroid,手机root后还安全吗?

来源:互联网 发布:js节点类型 编辑:程序博客网 时间:2024/04/29 20:40

你是否仍在为手机安全感到困扰?是否担心手机root之后会带来更大的安全隐患?SEAndroid会帮助你解决困扰!

            SEAndroid基于NSA(美国国家安全局)开发的SELinux (Security-Enhanced Linux),NSA在Linux社区的帮助下开发了基于Linux的强制访问控制(MAC),在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件,从而从根源上限制了恶意程序的访问。

            SEAndroid实现了强制访问控制,他可以针对特定的程序和文件资源来进行权限的控制,我们权限控制的主体不再是用户,而变成了进程、应用,并且每个进程不可以改变文件资源的访问权限,因为每个文件资源很对不同的进程主体设置了不同的访问权限。系统在编译时预设了访问策略,该策略中包含了很多规则,规则指定了进程主体访问文件资源的权限。在对文件资源访问进行控制的同时,Binder IPC、Socket、Properties的访问同样纳入到SEAndroid的控制中,这使得每个进程的活动空间就变小了,即使你拥有了root权限,在使用不同进程的时候也并不一定能取得root权限。

            从下图我们可以看到,启动SEAndroid之后的系统,所有文件都包含了安全context:

# ls -Z

drwxrwx---        system               cache                u:object_r:cache_file:s0                           cache

drwxrwx--x       system               system               u:object_r:system_data_file:s0                  data

drwxr-xr-x        root                    root                   u:object_r:device:s0                                dev

-rwxr-x---         root                    root                   u:object_r:rootfs:s0                                 init.rc

dr-xr-xr-x         root                     root                  u:object_r:proc:s0                                   proc

…………

            同样的下图是系统运行后的进程context,可以看出不同的进程可以属于各自的domain:

# ps -Z

u:r:init:s0                                              root                  1          0     /init

u:r:kernel:s0                              root                  72         2     mmcqd/0

u:r:kernel:s0                              root                  2          0     kthreadd

u:r:servicemanager:s0     system   98         1     /system/bin/servicemanager

u:r:rild:s0                                              radio     104       1     /system/bin/rild

u:r:surfaceflinger:s0        system   105       1     /system/bin/surfaceflinger

…………

            因此,通过规则的设定,可以限制每个domain的权限,下面列举了servicemanager的权限设置TE(type enforcement):

type servicemanager, domain;

type servicemanager_exec, exec_type, file_type;

init_daemon_domain(servicemanager)

allow servicemanager self:binder set_context_mgr;

allow servicemanager domain:binder { receive transfer };

 

         不仅系统进程进行了强制访问控制,不同的APP同样进行了权限的区分,根据签名的不同被分到不同的domain中。常见的domain如system_app、platform_app、media_app、untrusted_app等,尤其对于untrusted_app的应用访问的资源特别有限。

            目前困扰用户最多的是病毒问题,一种典型的病毒就是通过进程注入关键进程(手机银行客户端等)的方式实现用户信息的监听、控制,给用户带来了极大的威胁。在启动了SEAndroid的系统中,此种病毒被多层次的拦截:1.root权限获取更加困难,shell权限很难将文件放入system_file类型目录下。2.ptrace的权限受到严格的控制,通过adb启动的进程更是无法实现注入,为了更加安全可以关闭ptrace功能。3.被注入的进程的权限被限定到规定的范围内,不能为所欲为。从而彻底的阻止了此类病毒带来的危害,给用户使用手机银行等应用带来了更高的可靠性。

由此可见,root用户不再是万能的,权限被进行了彻底的隔离,进程的权限被设定到了最小的范围内。关于SEAndroid技术的一些细节稍后继续分析。

0 0