欢迎来到天天文库
浏览记录
ID:20971615
大小:618.50 KB
页数:21页
时间:2018-10-18
《seandroid安全机制框架分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、WORD文档下载可编辑SEAndroid安全机制框架分析SEAndroid安全机制所要保护的对象是系统中的资源,这些资源分布在各个子系统中,例如我们经常接触的文件就是分布文件子系统中的。实际上,系统中需要保护的资源非常多,除了前面说的文件之外,还有进程、socket和IPC等等。对于Android系统来说,由于使用了与传统Linux系统不一样的用户空间运行时,即应用程序运行时框架,因此它在用户空间有一些特有的资源是需要特别保护的,例如系统属性的设置。接下来,我们就通过图1来观察SEAndroid安全机制的整体框架,如
2、下所示:从图1可以看到,以SELinux文件系统接口为边界,SEAndroid安全机制包含有内核空间和用户空间两部分支持。在内核空间,主要涉及到一个称为SELinuxLSM的模块。而在用户空间中,涉及到SecurityContext、SecurityServer和SEAndroidPolicy等模块。这些内核空间模块和用户空间模块的作用以及交互如下所示:1.内核空间的SELinuxLSM模块负责内核资源的安全访问控制。专业技术资料分享WORD文档下载可编辑2.用户空间的SEAndroidPolicy描述的是资源安全访
3、问策略。系统在启动的时候,用户空间的SecurityServer需要将这些安全访问策略加载内核空间的SELinuxLSM模块中去。这是通过SELinux文件系统接口实现的。3.用户空间的SecurityContext描述的是资源安全上下文。SEAndroid的安全访问策略就是在资源的安全上下文基础上实现的。4.用户空间的SecurityServer一方面需要到用户空间的SecurityContext去检索对象的安全上下文,另一方面也需要到内核空间去操作对象的安全上下文。5.用户空间的selinux库封装了对SELin
4、ux文件系统接口的读写操作。用户空间的SecurityServer访问内核空间的SELinuxLSM模块时,都是间接地通过selinux进行的。这样可以将对SELinux文件系统接口的读写操作封装成更有意义的函数调用。6.用户空间的SecurityServer到用户空间的SecurityContext去检索对象的安全上下文时,同样也是通过selinux库来进行的。接下来,我们就从内核空间和用户空间两个角度来分析SEAndroid安全机制框架。一.内核空间在内核空间中,存在一个SELinuxLSM模块,这个模块包含有一
5、个访问向量缓冲(AccessVectorCache)和一个安全服务(SecurityServer)。SecurityServer负责安全访问控制逻辑,即由它来决定一个主体访问一个客体是否是合法的。这里说的主体一般就是指进程,而客体就是主体要访问的资源,例如文件。与SELinuxSecurityServer相关的一个内核子模块是LSM,全称是LinuxSecurityModel。LSM可以说是为了SELinux而设计的,但是它是一个通用的安全模块,SELinux可以使用,其它的模块也同样可以使用。这体现了Linux内核
6、模块的一个重要设计思想,只提供机制实现而不提供策略实现。在我们这个例子中,LSM实现的就是机制,而SELinux就是在这套机制下的一个策略实现。也就是说,你也可以通过LSM来实现自己的一套MAC安全机制。SELinux、LSM和内核中的子系统是如何交互的呢?首先,SELinux会在LSM中注册相应的回调函数。其次,LSM会在相应的内核对象子系统中会加入一些Hook代码。例如,我们调用系统接口read函数来读取一个文件的时候,就会进入到内核的文件子系统中。在文件子系统中负责读取文件函数vfs_read就会调用LSM加入
7、的Hook代码。这些Hook代码就会调用之前SELinux注册进来的回调函数,以便后者可以进行安全检查。专业技术资料分享WORD文档下载可编辑SELinux在进行安全检查的时候,首先是看一下自己的AccessVectorCache是否已经有结果。如果有的话,就直接将结果返回给相应的内核子系统就可以了。如果没有的话,就需要到SecurityServer中去进行检查。检查出来的结果在返回给相应的内核子系统的同时,也会保存在自己的AccessVectorCache中,以便下次可以快速地得到检查结果。上面描述的安全访问控制流
8、程可以通过图2来总结,如下所示:从图2可以看到,内核中的资源在访问的过程中,一般需要获得三次检查通过:1.一般性错误检查,例如访问的对象是否存在、访问参数是否正确等。2.DAC检查,即基于LinuxUID/GID的安全检查。3.SELinux检查,即基于安全上下文和安全策略的安全检查。二.用户空间专业技术资料分享WORD文档下载可编辑在用户空间
此文档下载收益归作者所有