• Android SELinux访问向量规则


    一般如果系统某个文件无法访问,log中出现 avc 权限问题,我们只需要在对应 te 中添加 allow 规则就行。如下,只需要在 init.te 中为 vendor_sysfs_graphics:lnk_file 增加 read 权限即可。

    init    : type=1400 audit(0.0:14): avc: denied { read } for name="device" dev="sysfs" ino=51107 scontext=u:r:init:s0 tcontext=u:object_r:vendor_sysfs_graphics:s0 tclass=lnk_file permissive=0

    但有时候会出现添加 allow 规则后编译不过情况。这种情况一般是由于源码 system 目录下 neverallow 规则冲突导致,需要针对修改 neverallow (system目录下这个修改大概率会导致GMS测试不过)。

    上面就是我们最常见的修改。这里涉及到两个访问向量: allowneverallow。除此之外,还有两个不常修改的两个:dontauditauditallow

    • allow              表示允许主体对客体执行后面的操作

    • neverallow    表示不允许主体对客体执行后面的操作

    • dontaudit       表示检查策略信息,但是不记录违反规则的信息

    • auditallow      表示检查策略信息,记录违反规则的信息

    前面两个好理解,后面两个简单来说。dontaudit 标记的权限,检查访问者无权限直接阻值,但是不输出任何记录,从log中看不到avc异常之类信息。auditallow 区别就在于会记录违反规则的信息,在log中输出提醒。

    例子:

    android P之后,/proc/stat CPU信息这个节点就禁止非系统应用访问。通过三方app去读取的话,可以看到有以下提示。

    avc: denied { open } for path="/proc/stat" dev="proc" ino=4026532037 scontext=u:r:untrusted_app_all tcontext=u:object_r:proc_stat:s0 tclass=file permissive=1

    avc: denied { getattr } for path="/proc/stat" dev="proc" ino=4026532037 scontext=u:r:untrusted_app_all tcontext=u:object_r:proc_stat:s0 tclass=file permissive=1

    然后我们在ROM中添加上open getattr权限后。(一般在device目录下新建变化部分权限)

    allow untrusted_app_all proc_stat:file  { open getattr };

    发现即使log中没有avc异常信息,但是还是无法访问。这是因为 system/sepolicy/private/untrusted_app_all.te 中定义了

    # These have been disallowed since Android O.
    # For P, we assume that apps are safely handling the denial.
    dontaudit untrusted_app_all proc_stat:file read;

     read 这个权限虽然缺少了,但是不会输出。把这行注释掉或者修改成 auditallow 之后,再打印就能看见log中提示缺少 read 权限。

    所以,权限添加要增加上read权限,或者,将 dontaudit 修改成 allow 也行

    allow untrusted_app_all proc_stat:file  { open getattr read };

  • 相关阅读:
    【Java】解决安全漏洞
    centos7 安装hadoop
    【学习记录】Windows10蓝屏问题排查
    BIT-7文件操作和程序环境(16000字详解)
    powershell中的常用软件打开命令
    ADB的概念、使用场景、工作原理
    YOLO系列改进之四十四——融入适配GPU的轻量级 G-GhostNet
    智慧农业发展,商业计划书撰写,商业模式,ppt亮点
    Java面试题总结16之分布式id生成方案
    “index“ should always be multi-word
  • 原文地址:https://blog.csdn.net/tq501501/article/details/132368923