SEAndroid之IPC

数字孪生变电站如何制作?虚拟现实项目强荐广州华锐互动 变电站数字孪生系统可以为提高变电站设备与环境的实时感知能力、在线诊断设备健康状态、促进设备隐藏故障定位和维修效率的提高、实现设备全生命周期提供有力支撑。通过对设备状态的准确评估,可以延长设备的生命周期,实现资产增值。1、3D可视化:建立可视化平台,集中展示所有3D模型信息、数据信息、环境信息和人员信息,包括设备数字模型、建筑外形及内部、周边地形、人员动态、天气、时间等。4、智能监控:采用先进的AI摄像头,通过设备的图像识别,自动智能分析图像,准确分析设备状态、运行动态、外围控制情况。... 阅读详情

SELinux 在系统级增加了强制访问控制,每个VFS node均在Security Server的控制之中。IPC是系统的重要功能,未经授权的使用均会给系统带来安全隐患,所以本文重点对SEAndroid在IPC中安全功能进行分析,作为Android的主要通信工具socket和binder,在SEAndroid均增加了权限的控制,下面@安卓安全小分队 分别对两个进行简要的分析。

一、binder

为了增加binder的权限控制,首先在kernel的policy中增加一个class,并且增加了几个方法,

{ "binder", { "impersonate", "call", "set_context_mgr", "transfer", "receive"} },

     Impersonate:该进程是否可以代表另一个进程使用binder

     Call:该进程是否可以调用另一个进程

     Set_context_mgr:是否可以将自己注册成Context Manager

     Transfer:是否可以传递某类型的binder引用到其他进程

     Receive:是否可以接收某类型binder引用


对binder调用规则的配置有些繁琐,所以在TE中使用宏进行配置 binder_use 、binder_call 、binder_transfer 、binder_service。相应的功能介绍在代码里已经注释的比较清晰,如:

# binder_call(clientdomain, serverdomain)
# Allow clientdomain to perform binder IPC to serverdomain.
define(`binder_call', `
# First we receive a Binder ref to the server, then we call it.
allow $1 $2:binder { receive call };
# Receive and use open files from the server.
allow $1 $2:fd use;')

对于TE文件只需简单配置即可,例如servicemanager:

    allow servicemanager self:binder set_context_mgr;

    allow servicemanager domain:binder { receive transfer };

配置表示了servicemanager可以将自己设置为context manager,并且它可以对所有domain执行receive和transfer的操作。

 

下面看一下驱动的实现流程。首先在security_ops中增加了4个操作函数

.binder_set_context_mgr = selinux_binder_set_context_mgr,
.binder_transaction =              selinux_binder_transaction,
.binder_transfer_binder = selinux_binder_transfer_binder,
.binder_transfer_file =            selinux_binder_transfer_file,


首先看一下第一个函数,其的实现原理就是去AVC中查询当前的sid是否设置了context_mgr的权限,如果未经授权,则禁止此次操作。

static int selinux_binder_set_context_mgr(struct task_struct *mgr)
{
         u32 mysid = current_sid();
         u32 mgrsid = task_sid(mgr);
         return avc_has_perm(mysid, mgrsid, SECCLASS_BINDER, BINDER__SET_CONTEXT_MGR, NULL);
}

对于transaction的控制也是类似,在binder_transaction中增加hook,用来检查本次调用的权限,其中也是同样在AVC中查询权限。

static void binder_transaction(struct binder_proc *proc,
                                 struct binder_thread *thread,
                                 struct binder_transaction_data *tr, int reply)
……
                 if (security_binder_transaction(proc->tsk, target_proc->tsk) < 0) {
                          return_error = BR_FAILED_REPLY;
                          goto err_invalid_target_handle;
                 }
……
 
static int selinux_binder_transaction(struct task_struct *from, struct task_struct *to)
{
         u32 mysid = current_sid();
         u32 fromsid = task_sid(from);
         u32 tosid = task_sid(to);
         int rc;
 
         if (mysid != fromsid) {
                 rc = avc_has_perm(mysid, fromsid, SECCLASS_BINDER, BINDER__IMPERSONATE, NULL);
                 if (rc)
                          return rc;
         }
 
         return avc_has_perm(fromsid, tosid, SECCLASS_BINDER, BINDER__CALL, NULL);
}


调用AVC进行权限查询和其他hook是一致的,基本原理如下图所示,如果cache中未能查到,就会去security server中查询policy,并且cache起来。

 



二、service sockets

普通socket的权限管理在SELinux中均已实现,所以这里主要分析在SEAndroid中service sockets的处理。Init进程在创建service附属socket的同时,根据file_contexts查询当前socket的权限,并将信息加入到socket的security context中,启动后的权限如下所示:

srw------- system   system            u:object_r:installd_socket:s0 installd
srw-rw-rw- root     root              u:object_r:keystore_socket:s0 keystore
srw-rw---- root     system            u:object_r:netd_socket:s0 netd
srw-rw-rw- root     root              u:object_r:property_socket:s0 property_service
srw-rw---- root     radio             u:object_r:rild_socket:s0 rild
……


关于socket使用权限的配置可以简单的使用两个宏定义unix_socket_connect、unix_socket_send,他们分别对应着TCP和UDP类型的socket访问。

# unix_socket_connect(clientdomain, socket, serverdomain)
# Allow a local socket connection from clientdomain via
# socket to serverdomain.
define(`unix_socket_connect', `
allow $1 $2_socket:sock_file write;
allow $1 $3:unix_stream_socket connectto;
')

对于规则的配置只需如下,他表示了adbd domain的subject可以通过vold_socket类型的socket访问vold的domain。

unix_socket_connect(adbd, vold, vold)
有什么分析不妥的地方欢迎围观、拍砖!

华为od 面试八股文_C语言_02_含答案 阅读详情

相关推荐

Flink SQL数据血缘实战:如何用Calcite追踪字段级数据流向(附源码示例)

本文深入探讨了如何利用Apache Calcite解析Flink SQL执行计划,实现字段级数据血缘的追踪。通过扩展Calcite的元数据处理器,特别是针对Flink特有的Snapshot等节点,文章提供了从获取优化后的逻辑计划到提取并可视化血缘关系的完整实战方案,并附有核心源码示例,帮助开发者构建实时数仓的数据治理能力。

weixin_29032337的博客 142

Binder中的SEAndroid控制

前言Binder 也即Android独有的进程间通信方式,在 Android 系统中无处不在。区别于共享内存、socket、管道等其他进程间通信的手段,Binder 的实现较为独特。从本质上讲,Binder 是借由对/dev/binder 的一系列操作实现的,在内核中作为驱动存在,当然其权限控制可以正常借由Linux的安全模块实现。同时,由于所有系统服务都需要在Servi...

内核工匠 1488

嵌入式软件面试常见问题及答案

干了多年的嵌入式,被面试过,也面过不少新人,下面这些是面试中很常见的一些问题及答案,答案可以根据自己的经验自己思考下。--持续补充并更新

weixin_37553721的博客 6026

SEAndroid安全机制对Binder IPC的保护分析

在SEAndroid安全机制中,除了文件和属性,还有Binder IPC需要保护。Binder IPC是Android系统的灵魂,使用得相当广泛又频繁。例如,应用程序都是Binder IPC请求访问系统服务和资源。因此,SEAndroid安全机制必须要为Binder IPC保驾护航,阻止一个进程非法访问其它进程的服务和资源。本文就详细分析SEAndroid安全机制对Binder IP...

810364804 458

保姆级教程:在PX4 Gazebo仿真中为Iris无人机挂载Intel D435i深度相机(含完整配置流程)

本文提供在PX4 Gazebo仿真环境中为Iris无人机挂载Intel D435i深度相机的完整配置流程,涵盖环境准备、模型部署、插件安装及调试技巧。通过详细步骤和常见问题解决方案,帮助开发者快速搭建深度相机仿真环境,适用于无人机视觉开发与算法测试。

weixin_28688385的博客 338

Vivado SDK中LWIP库版本冲突与RTL8211FDI兼容性实战解析

本文深入解析Vivado 2019.1 SDK中LWIP 1.0库与RTL8211FDI千兆PHY芯片的版本冲突问题,并提供实战解决方案。通过手动移植高版本LWIP库、整合第三方驱动及优化BSP配置,有效解决了以太网通信兼容性问题,确保千兆性能稳定运行。

ios99的博客 275

[Android L]SEAndroid增强Androd安全性背景概要及带来的影响

Android [Android L] SEAndroid增强Androd安全性背景概要及带来的影响 Android是建立在标准的Linux Kernel 基础上, 自然也可以开启SELinux, 通常在通用移动平台上, 很少开启这样的安全服务, Google 为了进一步增强Android 的安全性, 经过长期的准备,目前已经在Android 5.0(L) 上完整的开启SELinux, 并对SELinux 进行深入整合形成了SEAndroid.

好久不见 5888

Chronos时间序列预测实战:从零开始微调你的第一个大语言模型(附完整代码)

本文提供了一份详细的Chronos时间序列预测大语言模型微调实战指南。从环境搭建、数据预处理到模型配置与训练,手把手教你如何利用自己的数据微调Chronos模型,并完成评估与部署,助你快速掌握这一前沿技术。

zzz56的博客 300

Android Safety 系列专题【篇四:Android SEPolicy】

SELinux原本是美国国安局联合一些公司设计的一个针对Linux的安全加强系统。 SELinux出现之前,Linux系统上的安全模型叫做DAC(自主访问控制),其原理是进程所拥有的权限与执行它的用户的权限相同(例如:以root用户启动Browser,那么Browser就有root用户的权限,在Linux系统上能干任何事情)。SELinux的出现结束了这种宽松的访问。 SELinux在DAC的基础之上,设计了新的安全模型叫做MAC(强制访问控制),其原理是任何进程想在SELinux系统中干任何事情,都必

qq_27672101的博客 1万+

西门子OMAC PackML V2022在S7-1200/S7-1500中的状态机设计与应用实践

本文详细解析了西门子OMAC PackML V2022在S7-1200/S7-1500中的状态机设计与应用实践。通过实际案例和代码示例,介绍了状态机的基础认知、硬件配置、逻辑开发、调试技巧以及与MES系统集成的高级应用,帮助工程师高效实现设备自动化控制。

weixin_29255731的博客 535

【一看就会】Autoware.universe中静态绕障路线的生成逻辑

在路径行为规划中,前期根据地图和起点终点,生成了一组连续可行的路径段序列(lanelets),然后后续路径行为规划,又会进行起始点,终止点,避障绕障路径的路径规划,并且会调用route_handler中的函数,进行中心线生成,最后生成路径,后续再给速度行为规划进行速度规划。在autoware.universe的规划中,是基于规则的规划,而其中的规则又是为了解决不同场景的。而这些场景,大部分是为了解决路上障碍物(静态、动态、行人、车辆等等)。

weixin_48386130的博客 321

SEAndroid的IPC之Binder

标 题: 【原创】SEAndroid之IPC 作 者: ansquad 时 间: 2013-04-19,10:43:49 链 接: http://bbs.pediy.com/showthread.php?t=170027 SELinux在系统级增加了强制访问控制,每个VFS node均在Security Server的控制之中。IPC是系统的重要功能,未经授权的使用均会给系统带来安全隐

u014408532的专栏 880

点云配准SIFT+SI+RANSAC+ICP

Spin Image(SI)是一种用于点云数据描述的特征描述子,广泛应用于三维点云配准、识别和重建等领域。它能够捕捉点云中的局部几何信息,具有旋转不变性和部分平移不变性等优点,是一种非常强大的特征描述子。Spin Image是一种强大的点云特征描述子,具有旋转不变性、局部几何信息捕捉等优点,适用于点云配准、目标识别和三维重建等多个领域。通过合理选择局部区域、建立参考框架和计算描述子,可以充分利用Spin Image描述点云的特征,从而实现各种三维场景分析和处理任务。

点云兔子的博客 559

SEAndroid在IPC中安全功能进行分析

SELinux在系统级增加了强制访问控制,每个VFS node均在Security Server的控制之中。IPC是系统的重要功能,未经授权的使用均会给系统带来安全隐患,所以本文重点对SEAndroid在IPC中安全功能进行分析,作为Android的主要通信工具socket和binder,在SEAndroid均增加了权限的控制,下面分别对两个进行简要的分析。由于Android行业化应用越来愈多,对

joy 1165

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

SEAndroid策略

目录(?)[-] 基础知识Policy 标记安全上下文 SEAndroid中的安全上下文安全上下文标记的四种方式为文件系统和文件系统中的文件标记安全上下文 TEType Enforcement 转换transition文件和目录无限权限设备App网络IPC MLSMulti-Level Security 什么是MLS为何要引入MLSMLS中的相关参量MLS对进程的

简行之旅 2万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

SEAndroid MLS

http://blog.youkuaiyun.com/l173864930/article/details/17194899 MLS(Multi-Level Security)什么是MLS,为何要引入MLS MLS称为多级别安全是另一种强制访问控制方法,特别适合于政府机密数据的访问控制,早期对计算机安全的研究大多数都是以在操作系统内实现MLS访问控制为驱动的。所有MLS的使用都是建立在TE安全的基础之上。

2025

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

SEAndroid安全机制框架分析

origin: http://blog.youkuaiyun.com/Luoshengyang/article/details/37613135我们知道,Android系统基于Linux实现。针对传统Linux系统,NSA开发了一套安全机制SELinux,用来加强安全性。然而,由于Android系统有着独特的用户空间运行时,因此SELinux不能完全适用于Android系统。为此,NSA针对Android系统...

yazhouren的专栏 663
上一篇: 浅谈短、彩信的拦截
下一篇: 乐安全内嵌广告屏蔽原理
鲶鱼团队
博客等级 码龄14年 36粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值