当前位置: 首页 > news >正文

高通平台基线升级时,从Android 13升级到Android 15遇到的selinux权限不生效问题分析

高通平台基线升级时,从Android 13升级到Android 15遇到的selinux权限不生效问题分析:

高通平台la.1.x基线升级到la.2.x基线遇到自己添加domain selinux权限不生效。
高通平台源代码:有qssi和vendor两部分组成,qssi是放google android的原生代码。vendor是放的高通的代码。la.1.x基线是Android 13的代码:
在la.1.x源代码的.repo/.repo/manifests目录:grep -r "system/sepolicy",可以看到qssi和vendor的system/sepolicy是共线的,即同一份代码。la.2.x基线是Android 15的代码:
在la.1.x源代码的.repo/.repo/manifests目录:grep -r "system/sepolicy",可以看到qssi是Android 15的代码,vendor是android 13的代码。比如:之前在la.1.x上创建一个自己domain “myfoo” ,在la.1.x上myfoo selinux权限是生效的,工作也是正常的。
# foo service
type myfoo, domain;
type myfoo_exec, exec_type, file_type;
init_daemon_domain(myfoo)
但,到了la.2.x基线上,qssi和vendor都已经添加了myfoo selinux相关规则,但依然报avc错误。
现象是:在selinux强制模式下,myfoo不生效;但,如果setenforce 0后进入selinux的宽容模式,myfoo却能工作。
很奇怪,即使已经添加了 Selinux 权限,并且编译未报错,但是验证还是无效。
然后,网上各种搜索和在https://source.android.google.cn/docs/security/features/selinux网页了解android上selinux的用法。
搞了5天左右修复了该问题。
写文档记录一下。原因需要修改33.0.cil和34.0.cil文件。
在qssi代码的system/sepolicy目录:
find ./ -name *.cil
修复方法:在33.0.cil和34.0.cil文件添加映射:
33.0.cil文件添加:
;; my selinux config
(typeattributeset myfoo_33_0 (myfoo))
(expandtypeattribute (myfoo_33_0) true)
(typeattributeset myfoo_exec_33_0 (myfoo_exec))
(expandtypeattribute (myfoo_exec_33_0) true)34.0.cil文件添加:
;; my selinux config
(typeattributeset myfoo_34_0 (myfoo))
(expandtypeattribute (myfoo_34_0) true)
(typeattributeset myfoo_exec_34_0 (myfoo_exec))
(expandtypeattribute (myfoo_exec_34_0) true)在老的版本的:30.0.ignore.cil 31.0.ignore.cil 33.0.ignore.cil添加myfoo和myfoo_exec
但,不要在最新的33.0.ignore.cil和34.0.ignore.cil里面添加(否则,还是报avc错误)。
*.cil和*.ignore.cil是互斥的,要么在*.cil文件里添加,要么在*.ignore.cil文件里添加。

参考文档:
https://source.android.google.cn/docs/security/features/selinux
https://source.android.google.cn/docs/security/features/selinux/customize?hl=zh_cn
https://source.android.google.cn/docs/security/features/selinux/compatibility?hl=zh_cn
https://source.android.google.cn/docs/security/features/selinux/device-policy?hl=zh_cn

https://blog.csdn.net/weixin_43229570/article/details/143617850
MTK平台中Vendor分区的Selinux权限添加

https://blog.csdn.net/it_rensheng/article/details/121691982?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-4-121691982-blog-113996970.235v43pc_blog_bottom_relevance_base9&spm=1001.2101.3001.4242.3&utm_relevant_index=6
Android SELinux 权限问题(二)—添加权限后不生效

https://blog.csdn.net/DKBDKBDKB/article/details/130112049
Android11 SELinux 添加权限后不生效

https://developer.aliyun.com/article/1489649
Android HAL深入探索(6): HIDL 添加SELinux 完整调试过程

mlstrustedsubject: 包含了所有能越过MLS检查的主体domain。
mlstrustedobject: 包含了所有能越过MLS检查的客体type。

http://www.dtcms.com/a/296455.html

相关文章:

  • 【矩阵专题】Leetcode54.螺旋矩阵
  • Linux基础服务(NTP/Chrony)
  • 红队视角:实战渗透测试中漏洞利用的进阶技巧与防御
  • Python Playwright库详解:从入门到实战
  • 虚拟电厂——解读69页 2024虚拟电厂售电业务及共享储能等新型业态趋势【附全文阅读】
  • C 语言核心知识点详解:函数调用、数组传参与变量特性
  • 力扣20:有效的括号
  • 秋叶sd-webui频繁出现生成后无反应的问题
  • Java_多线程_生产者消费者模型_互斥锁,阻塞队列
  • P1308 [NOIP 2011 普及组] 统计单词数
  • 【Java】 Arthas 实战:用“侦探式”排查法定位 Java 异常根源
  • 用python自动标注word试题选项注意事项
  • LeetCode71简化路径
  • 【开源】WpfMap:一个基于WPF(Windows Presentation Foundation)技术构建的数据可视化大屏展示页面
  • 新能源汽车行业研究系列报告
  • Web前端交互利用Python跟大模型操作
  • multiprocessing模块使用方法(三)
  • multiprocessing模块使用方法(一)
  • PM2使用
  • HMAC算法之SHA256哈希C++实现详解
  • windwos11网页切换残留/卡屏/冻结/残影问题
  • 在 OceanBase 中,使用 TO_CHAR 函数 直接转换日期格式,简洁高效的解决方案
  • 【安卓笔记】lifecycle与viewModel
  • 科大讯飞运维 OceanBase 的实践
  • RabbitMQ—仲裁队列
  • OceanBase 4.3.5 解析:DDL性能诊断
  • Windows 11下纯软件模拟虚拟机的设备模拟与虚拟化(仅终端和网络)
  • SpringCloud -- 服务保护和分布式事务
  • 六、Element-快速入门
  • Oracle序列