MTK Android12 分析system_app允许vendor_mtk_audiohal_prop SELinux 权限问题

news2024/9/23 1:35:33

本文将尝试分析,在开发 Android 12 MTK 平台时遇到了 vendor_mtk_audiohal_prop 属性相关的 SELinux 权限问题。包括如何修改 SELinux 策略以允许 system_app 设置 vendor_mtk_audiohal_prop 属性。

问题描述

希望允许 system_app 设置 vendor_mtk_audiohal_prop 属性,但在编译时遇到了 neverallow 规则的限制和属性类型定义冲突的问题。

遇到的问题及解决方案

问题1:属性类型定义冲突

vendor_mtk_audiohal_prop 属性被同时定义为 vendor_restricted_propsystem_internal_prop,导致属性类型定义冲突。

FAILED: out/target/product/projectname/obj/FAKE/sepolicy_neverallows_intermediates/sepolicy_neverallows
/bin/bash -c "(ASAN_OPTIONS=detect_leaks=0 out/host/linux-x86/bin/checkpolicy -M -c 		30 -o out/target/product/projectname/obj/FAKE/sepolicy_neverallows_intermediates/sepolicy_neverallows.tmp out/target/product/projectname/obj/FAKE/sepolicy_neverallows_intermediates/policy.conf ) && (out/host/linux-x86/bin/sepolicy-analyze out/target/product/projectname/obj/FAKE/sepolicy_neverallows_intermediates/sepolicy_neverallows.tmp neverallow -w -f out/target/product/projectname/obj/FAKE/sepolicy_neverallows_intermediates/policy_2.conf || 	  ( echo \"\" 1>&2; 	    echo \"sepolicy-analyze failed. This is most likely due to the use\" 1>&2; 	    echo \"of an expanded attribute in a neverallow assertion. Please fix\" 1>&2; 	    echo \"the policy.\" 1>&2; 	    exit 1 ) ) && (touch out/target/product/projectname/obj/FAKE/sepolicy_neverallows_intermediates/sepolicy_neverallows.tmp ) && (mv out/target/product/projectname/obj/FAKE/sepolicy_neverallows_intermediates/sepolicy_neverallows.tmp out/target/product/projectname/obj/FAKE/sepolicy_neverallows_intermediates/sepolicy_neverallows )"
device/mediatek/sepolicy/basic/non_plat/property.te:39:ERROR 'Duplicate declaration of type' at token ';' on line 94212:
  type vendor_mtk_audiohal_prop, property_type, vendor_property_type, vendor_restricted_property_type;
#line 39
checkpolicy:  error(s) encountered while parsing configuration
17:41:49 ninja failed with: exit status 1

问题2:neverallow 规则限制

neverallow 规则限制了 system_appvendor_mtk_audiohal_prop 属性的设置操作。

学习和发现

在解决这些问题的过程中,进行了多次尝试和分析,并总结了以下几点。

1. 修改 system_app.te 文件

device/mediatek/sepolicy/basic/non_plat/system_app.te 文件中增加了以下内容:

set_prop(system_app, vendor_mtk_audiohal_prop)

会生成以下内容:

# policy.conf文件就会生成下面这么多内容


#line 239

#line 239
allow factory property_socket:sock_file write;
#line 239
allow factory init:unix_stream_socket connectto;
#line 239

#line 239
allow factory vendor_mtk_audiohal_prop:property_service set;
#line 239

#line 239
allow factory vendor_mtk_audiohal_prop:file { getattr open read map };
#line 239

#line 239

在这里插入图片描述

2. 修改 property.te 文件

device/mediatek/sepolicy/basic/non_plat/property.te 文件中,增加以下内容:

vendor_restricted_prop(vendor_mtk_audiohal_prop)

这会导致生成如下内容:

sepolicy_neverallows_intermediates/policy.conf.dontaudit:93689:  type vendor_mtk_audiohal_prop, property_type, vendor_property_type, vendor_restricted_property_type;
sepolicy_neverallows_intermediates/policy_2.conf:92231:  type vendor_mtk_audiohal_prop, property_type, system_property_type, system_public_property_type;
sepolicy_neverallows_intermediates/policy_2.conf.dontaudit:91714:  type vendor_mtk_audiohal_prop, property_type, system_property_type, system_public_property_type;
sepolicy_neverallows_intermediates/policy.conf:93953:  type vendor_mtk_audiohal_prop, property_type, system_property_type, system_public_property_type;
3. 尝试添加 system_internal_prop 定义

为了使 vendor_mtk_audiohal_prop 属性在系统中也能使用,尝试在 property.te 文件中增加:

system_internal_prop(vendor_mtk_audiohal_prop)

这会生成以下内容:

sepolicy_neverallows_intermediates/policy.conf.dontaudit:93684:  type vendor_mtk_audiohal_prop, property_type, vendor_property_type, vendor_restricted_property_type;
sepolicy_neverallows_intermediates/policy_2.conf:92479:  type vendor_mtk_audiohal_prop, property_type, vendor_property_type, vendor_restricted_property_type;
sepolicy_neverallows_intermediates/policy_2.conf.dontaudit:91962:  type vendor_mtk_audiohal_prop, property_type, vendor_property_type, vendor_restricted_property_type;
sepolicy_neverallows_intermediates/policy.conf:94201:  type vendor_mtk_audiohal_prop, property_type, vendor_property_type, vendor_restricted_property_type;

在这里插入图片描述

4. 冲突的定义

在尝试同时定义 vendor_mtk_audiohal_propsystem_internal_propvendor_restricted_prop 时,会出现冲突:

device/mediatek/sepolicy/basic/non_plat/property.te:39:ERROR 'Duplicate declaration of type' at token ';' on line 96691:
#line 39
  type vendor_mtk_audiohal_prop, property_type, vendor_property_type, vendor_restricted_property_type;
checkpolicy:  error(s) encountered while parsing configuration
5. 生成的策略文件

/out/target/product/projectname/obj/FAKE/sepolicy_neverallows_intermediates/policy.conf 文件中搜索 vendor_mtk_audiohal_prop,会发现以下定义:

sepolicy_neverallows_intermediates/policy.conf.dontaudit:93436:  type vendor_mtk_audiohal_prop, property_type, system_property_type, system_public_property_type;
sepolicy_neverallows_intermediates/policy.conf.dontaudit:93689:  type vendor_mtk_audiohal_prop, property_type, vendor_property_type, vendor_restricted_property_type;
sepolicy_neverallows_intermediates/policy_2.conf:92231:  type vendor_mtk_audiohal_prop, property_type, system_property_type, system_public_property_type;
sepolicy_neverallows_intermediates/policy_2.conf:92484:  type vendor_mtk_audiohal_prop, property_type, vendor_property_type, vendor_restricted_property_type;
sepolicy_neverallows_intermediates/policy_2.conf.dontaudit:91714:  type vendor_mtk_audiohal_prop, property_type, system_property_type, system_public_property_type;
sepolicy_neverallows_intermediates/policy_2.conf.dontaudit:91967:  type vendor_mtk_audiohal_prop, property_type, vendor_property_type, vendor_restricted_property_type;
sepolicy_neverallows_intermediates/policy.conf:93953:  type vendor_mtk_audiohal_prop, property_type, system_property_type, system_public_property_type;
sepolicy_neverallows_intermediates/policy.conf:94206:  type vendor_mtk_audiohal_prop, property_type, vendor_property_type, vendor_restricted_property_type;

MTK Policy Rule 解释

以下是不同属性类型的解释以及如果 vendor_mtk_audiohal_prop 添加这些属性类型的效果:

1. system_internal_prop
  • 用途:用于 /system 中的属性。
  • 效果vendor_mtk_audiohal_prop 只能在 /system 分区内部使用。
  • 定义
system_internal_prop(vendor_mtk_audiohal_prop)
  • 生成内容
type vendor_mtk_audiohal_prop, property_type, system_property_type, system_internal_property_type;
2. system_restricted_prop
  • 用途:在系统中使用,但不能被系统外部写入的属性。
  • 效果vendor_mtk_audiohal_prop 只能在系统内部写入,外部进程不能修改。
  • 定义
system_restricted_prop(vendor_mtk_audiohal_prop)
  • 生成内容
type vendor_mtk_audiohal_prop, property_type, system_property_type, system_restricted_property_type;
3. system_public_prop
  • 用途:没有任何访问限制的属性。
  • 效果vendor_mtk_audiohal_prop 可以被系统中的任何进程读取或写入。
  • 定义
system_public_prop(vendor_mtk_audiohal_prop)
  • 生成内容
type vendor_mtk_audiohal_prop, property_type, system_property_type, system_public_property_type;
4. system_vendor_config_prop
  • 用途:只能由 vendor_init 写入的属性。
  • 效果vendor_mtk_audiohal_prop 只能被 vendor_init 进程写入。
  • 定义
system_vendor_config_prop(vendor_mtk_audiohal_prop)
  • 生成内容
type vendor_mtk_audiohal_prop, property_type, system_property_type, system_vendor_config_property_type;
5. vendor_internal_prop
  • 用途:仅用于 /vendor 中的属性。
  • 效果vendor_mtk_audiohal_prop 只能在 /vendor 分区内部使用。
  • 定义
vendor_internal_prop(vendor_mtk_audiohal_prop)
  • 生成内容
type vendor_mtk_audiohal_prop, property_type, vendor_property_type, vendor_internal_property_type;
6. vendor_restricted_prop
  • 用途:在 vendor 中使用,但不能被 vendor 外部写入的属性。
  • 效果vendor_mtk_audiohal_prop 只能在 vendor 内部写入,外部进程不能修改。
  • 定义
vendor_restricted_prop(vendor_mtk_audiohal_prop)
  • 生成内容
type vendor_mtk_audiohal_prop, property_type, vendor_property_type, vendor_restricted_property_type;
7. vendor_public_prop
  • 用途:没有任何访问限制的 vendor 属性。
  • 效果vendor_mtk_audiohal_prop 可以被 vendor 分区中的任何进程读取或写入。
  • 定义
vendor_public_prop(vendor_mtk_audiohal_prop)
  • 生成内容
type vendor_mtk_audiohal_prop, property_type, vendor_property_type, vendor_public_property_type;

结论

通过分析和实验,了解了 vendor_mtk_audiohal_prop 属性在不同规则类型下的效果。由于规则类型定义的冲突,需要仔细选择适当的规则类型,确保属性在系统和供应商环境中的正确使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1976785.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot+Vue图书(图书借阅)管理系统-附项目源码与配套文档

摘 要 本论文阐述了一套先进的图书管理系统的设计与实现,该系统采用Java语言,结合现代Web开发框架和技术,旨在为图书馆提供高效、灵活且用户友好的资源管理解决方案。系统利用Spring Boot框架为核心,整合MyBatis ORM工具&#…

基于 systemc-2.3.1的virtual device 接入 qemu-arm

1,下载systemc-2.3.1 下载网址: SystemC Files $ wget https://www.accellera.org/images/downloads/standards/systemc/systemc-2.3.1.tgz 2,编译安装 systemc-2.3.1 tar zxf systemc-2.3.1.tgz cd systemc-2.3.1/ export CXXg mkdir bu…

PS 2024 百种常用插件下载安装教程【免费使用,先到先得】

文章目录 软件介绍软件下载安装步骤 专栏推荐: 超多精品软件(持续更新中…) 软件推荐: PS 2024 PR 2024 软件介绍 PS常用插件 此软件整合了市面近百款ps处理插件,可实现:一键制作背景,一键抠图…

linux安装docker(实操教程)

一、安装前准备工作 1.查看服务器操作系统版本 2.查看服务器的操作系统内核版本 3.安装依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2如果不是root用户登陆的系统,需要手动输入sudo -i切换到root帐户 4.设置阿里云docker-ce镜像源 yum-c…

美国失业率大幅上升,增加九月份降息利率的可能性

令人失望的是,美国7月份经济增加了11.4万个工作岗位,低于预期的17.5万个和6月的17.9万个。平均小时工资持续下降,但失业率升至4.3%。美元继续走低,美国国债也在下跌,而黄金则获得了提振。 7月份的非农业支付数据令人失…

ST语言支持包下载安装(VS CODE)

VSCODE是微软提供的代码编辑器,支持非常多的语言。 1、VSCODE下载 2、ST语言支持包 3、ST语言支持包下载 4、ST语言 。。

IndentationError: expected an indented block 深度解析

IndentationError: expected an indented block 深度解析与实战指南 在Python编程中,IndentationError: expected an indented block是一个常见的错误,通常发生在代码块没有正确缩进时。这个错误表明代码中存在格式问题,可能是缩进不一致或缺…

基于PFC和ECN搭建无损RoCE网络的工作流程分析

无损RoCE网络概念 RDMA(Remote Direct Memory Access,远程直接内存访问)是一种为了解决网络传输中服务器端数据处理延迟而产生的技术。RDMA 将用户应用中的数据直接传入服务器的存储区,通过网络将数据从一个系统快速传输到远程系…

力扣421.数组中两个数的最大异或和

力扣421.数组中两个数的最大异或和 __builtin_clz()&#xff1a;求出mx二进制最高位之后的0的个数 class Solution {public:int findMaximumXOR(vector<int>& nums) {int mx *max_element(nums.begin(),nums.end());//__builtin_clz函数int high_bit mx ? 31 -…

单元测试JUnit

前言&#x1f440;~ 上一章我们介绍了自动化测试工具Selenium&#xff0c;今天讲解单元测试工具JUnit JUnit JUnit的使用 JUnit注解 BeforeAll和AfterAll注解 BeforeEach和AfterEach注解 参数化 方法获取参数&#xff08;动态参数&#xff09; 断言 用例执行顺序 测…

詹妮弗洛佩兹度过一个单身的季节!知情人:双方无法达成妥协,可能几日内将递交离婚申请!

对于詹妮弗洛佩兹来说&#xff0c;这是一个单身的季节&#xff0c;但这似乎并不是她希望从分居的丈夫本阿弗莱克那里得到的。当她在东海岸的汉普顿度过夏天时&#xff0c;这位 51 岁的演员正忙着在西海岸购买价值 2050 万美元的房产。洛佩兹显然认为&#xff0c;尽管他们已经分…

常见的CMS漏洞解析!

PhPMyadmin&#xff1a; 姿势⼀&#xff1a;通过日志文件拿Shell 利用mysql日志文件写shell&#xff0c;这个日志可以在mysql里改变它的存放位置&#xff0c;登录phpmyadmin可以修改 这个存放位置&#xff0c;并且可以修改它的后缀名。所以可以修改成php的后缀名就能获取⼀个…

通讯协议原始指令日志Python脚本分析

一.通讯协议格式&#xff1a; 二.通讯协议原始日志 [2024-04-18 14:58:59.659 D] 99 99 0E 00 01 0A 04 00 01 00 00 00 1E FN FN [2024-04-18 14:58:59.959 D] 99 99 0E 00 01 0C 03 03 01 00 BC FN FN 三.通讯协议原始指令日志Python脚本分析&#xff08;仅解析指令的PC版和…

反制攻击者-蚁剑低版本

目录 安装 攻击者获取防守方的权限 防守方反制攻击者 防守方获取攻击者的shell权限 安装 安装蚁剑2.0.7版本 链接&#xff1a;https://pan.baidu.com/s/1t40UxkZ2XuSWG6VCdGzvDw?pwd8888 提取码&#xff1a;8888 下载好后先打开Loader文件夹下的.exe文件&#xff0c;打…

常见cms漏洞之dedecms

DedeCMS是织梦团队开发PHP 网站管理系统&#xff0c;它以简单、易用、高效为特色&#xff0c;组建出各种各样各具特色的网站&#xff0c;如地方门户、行业门户、政府及企事业站点等。 下载地址请网上自行寻找 搭建方式选择php study 首先搭建环境 #前台http://localhost/dedecm…

医院患者押金原路退回系统源码,一键操作秒到账,无需设备收银设备 押金+身份证+电子押金单 解决方案

科技之力赋能医院押金原路退回&#xff0c;安全可靠账目清晰 一、医院押金管理必要性 以下是一些可用于销售软件、突出医院管理方便的优点总结&#xff1a; 1. 高效便捷的押金原路退回流程&#xff1a;利用科技之力&#xff0c;简化操作&#xff0c;节省时间和人力成本&#…

使用WPF调用Python进行图像灰度处理

1. 前言 在本文中&#xff0c;我们将通过WPF应用程序调用Python脚本进行图像灰度处理。我们将使用Python的OpenCV库来处理图像&#xff0c;并将其转换为灰度图像&#xff0c;然后通过WPF界面来启动Python进程并展示结果。 2. 准备工作 在开始之前&#xff0c;请确保系统已经…

PDF隐写思路

文章目录 使用工具技术细节小结 使用工具 工具&#xff1a;WPS、010Editor、WbStego 技术细节 步骤&#xff1a; 使用 WPS 查看文件&#xff0c;看是否能打开。 若不能打开则使用 010Editor 查看是否少了头文件等。 正常的 PDF 缺少头文件的 PDF 如果缺少头文件则使用 010…

【初阶数据结构题目】9. 链表分割

链表分割 点击链接做题 例如&#xff1a; 排序前&#xff1a;1->6->2->3->5 X&#xff1a;X 3 排序后&#xff1a;1->2->6->3->5 思路&#xff1a; 排序前&#xff1a;1->6->2->3->5 小链表&#xff1a;malloc->1->2 大链表&#…

一文看懂STL标准模板中的set用法(C++)详细源码与例题

在 C 中&#xff0c;集合通常指的是标准模板库&#xff08;STL&#xff09;中的 std::set 或 std::unordered_set。这两个都是用来存储不重复元素的容器&#xff0c;但在实现和使用方式上有一些区别。 集合&#xff08;set&#xff09;是一个内部自动有序且不含重复元素的容器…