• 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 };

  • 相关阅读:
    『第四章』一见倾心:初识小雨燕(上)
    工业控制系统与传统信息系统安全的对比分析
    无胁科技-TVD每日漏洞情报-2022-11-17
    什么品牌的蓝牙耳机好用?性价比高蓝牙耳机推荐
    PyTorch 加载 Mask R-CNN 预训练模型并 fine-tuning
    Gin使用及源码简析
    含分布式电源的配电网可靠性评估(matlab代码)
    防止非法盗链的几种解决方案
    Lambda 表达式详解
    洋葱集团携手OceanBase实现分布式升级,全球数据首次实现跨云融合
  • 原文地址:https://blog.csdn.net/tq501501/article/details/132368923