绕过服务助手利用安卓系统服务的安全隐患分析
1. 系统服务身份验证流程
在安卓系统服务中,有一系列关键方法用于获取和检查调用者的身份,具体如下表所示:
| 功能 | 方法 |
| ---- | ---- |
| 获取调用者的 UID | Binder.getCallingUid() |
| 获取调用者的 PID | Binder.getCallingPid() |
| 获取调用者的 UserHandle | Binder.getCallingUserHandle() |
| 检查包名 | AppOpsService.checkPackage() |
| 检查操作 | AppOpsService.checkOperation() |
这些方法构成了系统服务验证身份的基本流程,确保服务调用的安全性。
2. 检测潜在漏洞
检测系统服务中是否存在漏洞的最后一步,是检查在之前识别出的方法对(即服务方法和对应的服务助手方法)中,安全机制是否一致。这个检查过程通常较为直接,并且在大多数情况下可以自动化完成。
以参数验证为例,我们将方法对中各方验证的参数分别组成两个集合。服务方法中验证的参数记为集合 S,服务助手方法中验证的参数记为集合 H。如果 S 不是 H 的超集,即助手检查的参数比服务多,那么属于 H 但不属于 S 的参数 p 可能会被非法值滥用。
对于处理重复调用的过程(7 个系统助手的 9 个方法),我们需要手动验证这些方法对之间的执行一致性。
3. 漏洞结果概述
通过开发的工具对最新的 AOSP 6.0.1
超级会员免费看
订阅专栏 解锁全文
2394

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



