CRePE与安卓权限提升攻击:安全与性能分析
在当今数字化的时代,智能手机已经成为人们生活中不可或缺的一部分。然而,随着智能手机功能的不断增强和应用的广泛使用,其安全问题也日益凸显。本文将介绍两种与安卓系统安全相关的技术——CRePE(Context - Related Policy Enforcement for Android)和安卓权限提升攻击,分析它们的原理、性能表现以及对安卓系统安全的影响。
CRePE:上下文相关策略执行系统
CRePE是一种用于安卓系统的上下文相关策略执行系统,它允许用户和授权第三方根据上下文定义细粒度的安全策略。
策略设置与执行流程
以公司为员工手机设置策略为例,公司可以通过发送带有私钥签名的消息来设置上下文和相关策略。这些信息会传递给PolicyManager并存储在PolicyProvider中。当检测到上下文时,ContextInteractor会通知PolicyManager激活上下文。PolicyManager会检查是否有应用在受限集合之外运行,如果有,则通知ActionPerformer停止该应用。在上下文激活期间,CRePE PermissionCheck会检查任何启动受限应用的请求,并由PolicyManager拒绝这些请求。当手机离开上下文时,ContextInteraction会通知PolicyManager,此时可以启动其他应用。
这个过程可以用以下mermaid流程图表示:
graph LR
A[公司发送策略消息] --> B[PolicyManager接收并存储]
B --> C{检测到上下文}
C -- 是 --> D[ContextInteractor通知激活]
D --> E[PolicyManager检查应用]
E -- 有受限应用 --> F[ActionPerformer停止应用]
C -- 否 --> G{离开上下文}
G -- 是 --> H[ContextInteraction通知]
H --> I[允许启动其他应用]
安全性分析
- 不降低安卓安全性 :CRePE在安卓权限检查之前进行额外的检查,对于未被CRePE拒绝的访问,会继续进行安卓权限检查,因此不会降低安卓系统的安全性。
- 修复安卓权限委托机制的弱点 :安卓当前的权限委托机制存在一个弱点,即应用可以定义一个普通级别的权限,该权限会自动授予而无需用户明确批准,这可能导致其他应用在用户不知情的情况下使用相同资源。CRePE可以帮助用户定义策略来限制资源访问,例如只允许在家庭或办公室等可信环境中使用蓝牙。
- 防止对手绕过执行 :CRePE作为安卓的扩展,以安卓中间件的权限运行。唯一在中间件之外的部分是UserInteractor,用户必须经过身份验证才能使用它。对手无法影响上下文激活,因为相关操作的值(如当前时间)是直接从CRePE使用系统服务驱动获取的。为了防止对手修改操作系统,可以使用基于可信平台模块(TPM)的可信计算机制。
性能开销分析
CRePE相对于安卓系统会引入一定的开销,主要体现在两个方面:
-
权限检查开销
:
-
时间开销
:通过实验测量,CRePE权限检查的时间开销可以忽略不计,所有结果都在0.6毫秒以下。随着活动规则数量的增加,时间开销会略有增加。
-
能量开销
:CRePE的能量消耗高于原始安卓系统,且随着活动规则数量的增加而增加。当设置10条规则时,能量开销约为安卓消耗的50%;当规则数量达到50条时,能量开销超过安卓的100%。不过,能量消耗并不随活动规则数量线性增加,且在实际应用中,设置50条活动规则的情况可能并不常见,因此CRePE解决方案仍然可行。
-
上下文检测开销
:开销主要取决于系统对上下文变化的响应速度。对于需要主动检查的上下文特征(如GPS坐标),检测频率越高,开销越大。通过实验发现,CRePE每5分钟请求一次GPS位置,电池电量会下降48%;每15分钟检查一次,电池电量消耗为11%。因此,可以通过优化位置检查频率来降低开销,例如在变量值远离上下文激活值时降低检查频率。
安卓权限提升攻击
安卓是一个流行的智能手机软件平台,其安全模型基于应用导向的强制访问控制和沙箱机制。每个应用在安装时会被分配一组固定的权限,只有拥有相应权限才能访问系统资源。然而,安卓的沙箱模型存在概念上的缺陷,允许权限提升攻击。
攻击原理
安卓的权限系统没有处理传递性权限使用问题,这使得应用可以绕过沙箱的限制。一个被利用的合法应用或恶意应用可以在运行时提升其权限,从而执行超出其沙箱授权的操作。
具体攻击场景
在一个具体的攻击场景中,一个非特权且在运行时被攻击的应用能够绕过其沙箱限制,向攻击者选择的电话号码发送多条短信。攻击使用了一种最近的内存利用技术——无返回的面向返回编程(ROP without returns),这种技术可以绕过内存保护机制和返回地址检查器,假设了一个强大的攻击者模型。
这个攻击过程可以用以下步骤表示:
1. 攻击者利用无返回的面向返回编程技术对非特权应用进行运行时攻击。
2. 被攻击的应用绕过沙箱限制。
3. 应用向攻击者选择的电话号码发送多条短信。
综上所述,CRePE为安卓系统提供了一种增强安全策略执行的方法,但会引入一定的性能开销。而安卓的沙箱模型存在权限提升攻击的风险,需要进一步改进以提高系统的安全性。在实际应用中,我们需要权衡安全和性能之间的关系,选择合适的安全解决方案。
CRePE与安卓权限提升攻击:安全与性能分析
对比分析
为了更清晰地了解CRePE和安卓权限提升攻击对安卓系统的影响,我们将两者进行对比分析,具体内容如下表所示:
|对比项|CRePE|安卓权限提升攻击|
| ---- | ---- | ---- |
|目的|增强安卓系统的安全策略执行,允许根据上下文定义细粒度安全策略|利用安卓权限系统漏洞,使应用绕过沙箱限制提升权限|
|安全性影响|不降低安卓安全性,修复部分权限委托机制弱点,防止对手绕过执行|破坏安卓沙箱模型的限制,使攻击者能执行超出授权的操作|
|性能开销|引入权限检查和上下文检测开销,时间和能量开销与规则数量和检测频率有关|未直接产生性能开销,但攻击成功后可能导致系统资源异常使用|
|应对措施|可通过优化权限检查和上下文检测频率降低开销|需要改进安卓权限系统,增加对传递性权限使用的检查|
从这个对比表格中可以看出,CRePE是为了增强系统安全而设计的,但会带来一定的性能代价;而安卓权限提升攻击则是对系统安全的威胁,需要通过改进系统来防范。
应对建议
针对上述的CRePE性能开销问题和安卓权限提升攻击风险,我们可以采取以下具体的应对建议:
针对CRePE性能开销
-
权限检查优化
:
- 规则管理 :合理设置活动规则的数量,避免不必要的规则增加。可以定期审查规则,删除不再需要的规则。
- 算法优化 :对CRePE的权限检查算法进行优化,减少不必要的计算和比较。例如,可以采用缓存机制,对于一些频繁检查的权限请求,直接从缓存中获取结果。
-
上下文检测优化
:
- 智能检测 :根据不同的上下文特征,采用不同的检测策略。对于GPS坐标等需要主动检查的特征,可以结合其他信息(如WiFi连接、基站信息)来减少检测频率。例如,当设备连接到已知的家庭或办公室WiFi时,可以降低GPS检测频率。
- 用户自定义 :允许用户根据自己的使用习惯和需求,自定义上下文检测的频率和方式。例如,用户可以设置在特定时间段内降低检测频率,以节省电量。
针对安卓权限提升攻击
-
权限系统改进
:
- 传递性权限检查 :在安卓权限系统中增加对传递性权限使用的检查,确保应用不能通过间接方式绕过沙箱限制。例如,当一个应用请求使用另一个应用的权限时,系统需要进行额外的验证。
- 动态权限管理 :引入动态权限管理机制,允许系统在应用运行时根据实际情况调整其权限。例如,当应用的行为异常时,系统可以暂时收回其部分权限。
-
安全监测
:
- 行为分析 :建立应用行为分析系统,实时监测应用的行为,及时发现异常的权限使用行为。例如,当一个应用在短时间内频繁请求敏感权限时,系统可以发出警告。
- 漏洞修复 :及时修复安卓系统和应用中的安全漏洞,减少攻击者利用漏洞进行权限提升攻击的机会。开发者应该定期更新应用,以确保其安全性。
未来展望
随着智能手机技术的不断发展,安卓系统的安全和性能问题将面临更多的挑战和机遇。
在安全方面,未来可能会出现更加复杂和隐蔽的权限提升攻击方式,这就需要安卓系统不断加强其安全机制。除了上述提到的改进权限系统和加强安全监测外,还可以探索新的安全技术,如人工智能和机器学习在安全领域的应用。例如,利用机器学习算法对应用的行为进行建模,预测可能的攻击行为,提前采取防范措施。
在性能方面,对于CRePE等增强安全策略执行的系统,需要不断优化其性能,减少开销。未来可能会出现更加高效的权限检查和上下文检测算法,以及更加智能的资源管理机制。例如,利用边缘计算技术,将部分权限检查和上下文检测任务转移到边缘设备上,减轻手机的负担。
同时,用户的安全意识也将起到至关重要的作用。用户应该更加谨慎地安装和使用应用,不随意授予应用不必要的权限。此外,开发者也应该更加注重应用的安全性,采用安全的开发方法和技术,从源头上减少安全漏洞的产生。
总之,安卓系统的安全和性能是一个相互关联的问题,需要系统开发者、应用开发者和用户共同努力,才能构建一个更加安全、高效的智能手机生态系统。


被折叠的 条评论
为什么被折叠?



