SEAndroid安全机制(二)

作者: 飞飞飞_Android | 来源:发表于2017-08-19 19:43 被阅读0次

前一篇文章介绍了SEAndroid安全机制的框架,以及代码中各个文件的作用,接下来总结下遇到SEAndroid问题的解决办法。

1. 问题判定
  • 可能出现需要SEAndroid权限的情况:内核节点信息的操作,进程间数据的操作等
  • 通过adb shell setenforce 0 将SELinux系统置为permissive状态:处于该状态下,如果主体的操作违反了策略,还能继续执行,但是系统会把违反的策略记录下来。这种状态相当于debug模式。
  • 在log中搜索关键字"avc: denied ",探查违反的策略记录信息。
2. 实例分析

遇到log如下:

    01-01 08:03:22.410000   217   217 W applypatch: type=1400 audit(0.0:16): avc: denied { read } for name="mmcblk0p15" dev="tmpfs" ino=3364 scontext=u:r:install_recovery:s0 tcontext=u:object_r:block_device:s0 tclass=blk_file permissive=0  
  • 报错含义:主体install_recovery对客体类型为block_device的blk_file没有read权限。
  • 一般情况下,找到install_recovery.te文件,添加allow语句:allow install_recovery block_device : blk_file read;
  • 添加之后编译发现报错提示:neverallow ..... 原来在domain.te文件中有代码如下:

    neverallow { domain -kernel -init -recovery -vold -uncrypt -emsd -rild -radio_config} block_device:blk_file { open read write };  

其含义是:domain中除了 -kernel -init -recovery -vold -uncrypt -emsd -rild -radio_config这几个域对该文件类型有读写权限,其他都不允许。

  • 继续在domain.te文件中寻找关于install_recovery相关的信息,发现如下:
neverallow { domain -install_recovery -recovery } recovery_block_device:blk_file write;

install_recovery拥有对recovery_block_device:blk_file 的读取权限。

  • 在device.te文件中可以看到:
type recovery_block_device, dev_type;
type block_device, dev_type;

block_device 和 recovery_block_device具有同样的属性值dev_type。

  • 再看file_contexts,看下文件安全上下文:
    /dev/block(/.*)?    u:object_r:block_device:s0  

定义的dev/block下面的文件都是block_device,而recover_block_device是没有定义的。我们可以定义我们要操作的文件为recover_block_device类型。

  • 最后我们只要在install_recovery.te中加入下面权限就可以了。
    allow install_recovery recover_block_device:blk_file { open read write };  
3.常用命令说明
  • getenforce 和 setenforce

getenforce 用于返回系统当前是处于enforcing状态还是permissive状态
setenforce用于切换系统的enforcing状态和permissive状态

permissive状态:处于该状态下,如果主体执行的操作违反了安全策略,还能继续执行,但是系统会把违反的策略记录下来。相当于debug模式。
enforcing状态:如果主体执行的操作违反了策略,将不能继续操作。

  • chcon命令
    chcon命令用于改变文件或者目录的安全上下文。

chcon dev_type abc.txt

这个例子将abc的安全上下文设置为dev_type。

  • restorecon命令
    用于恢复文件或者目录的安全上下文为系统原始设置。

  • chown命令
    用于配置文件或目录的用户和用户组信息。

chown system system dev/data..

参考链接:

http://www.jianshu.com/p/e67107e39c98
http://blog.csdn.net/luoshengyang/article/details/37749383

相关文章

  • SEAndroid安全机制(二)

    前一篇文章介绍了SEAndroid安全机制的框架,以及代码中各个文件的作用,接下来总结下遇到SEAndroid问题...

  • SEAndroid安全机制简要介绍和学习计划

    SEAndroid安全机制简要介绍和学习计划

  • APP安全

    安全 1、两个大方向展开—— 在引进SEAndroid安全机制之前,Android系统的安全机制分为应用程序和内核...

  • SEAndroid安全机制(一)

    建议阅读 文章完成后,有天偶然翻到google文档才发现关于SEAndroid安全机制非常详细的资料,建议阅读ht...

  • SELinux .te 文件

    简单说明 android 在4.3之后引入了基于selinux的安全机制,称为SEAndroid. 手机厂商会 基...

  • Android的安全机制(SEANDROID)

    历史 Android的安全模型是基于一部分应用程序沙箱(sandbox)的概念, 每个应用程序都运行在自己的...

  • SEAndroid

    SEAndroid安全机制所要保护的对象是系统中的资源,这些资源分布在各个子系统中,例如我们经常接触的文件就是分布...

  • 深入理解SELinux SEAndroid

    深入理解SELinux SEAndroid(第一部分) 深入理解SELinux SEAndroid之二

  • Linux学习 - SELinux/SEAndroid

    一、SELinux/SEAndroid简介 安全增强型 Linux(Security-Enhanced Linux...

  • 深入理解SELinux SEAndroid

    深入理解SELinux SEAndroid SEAndroid是Google在Android 4.4上正式推出的一...

网友评论

    本文标题:SEAndroid安全机制(二)

    本文链接:https://www.haomeiwen.com/subject/oshtdxtx.html