系统服务之间的 Android IPC 安全性
Posted
技术标签:
【中文标题】系统服务之间的 Android IPC 安全性【英文标题】:Android IPC security between system services 【发布时间】:2016-09-23 01:37:03 【问题描述】:我在Framework层的SystemServer中添加了一个系统服务。
interface IAService
void valueChange(int value)
public class XXXService extends IAService.Stub
我希望这个服务可以像下面一样被另一个系统服务调用。
IAService service = IAService.Stub.asInterface(ServiceManager.getService("A"));
serivce.valueChange("0");
但是,如果有人使用 ServiceManager 作为反射方式来获取这个服务实例。
他们可以尝试 IPC。
我们可以只允许另一个系统服务这样做吗?
谢谢:)
【问题讨论】:
【参考方案1】:我认为没有——人们通过反射使用各种隐藏服务。最好的办法是使用系统级权限对其进行保护,这样任何没有该权限的人在尝试调用您的方法时都会抛出异常。
【讨论】:
如果有人知道自己尝试这个IPC会获得非法收益,他们就会尝试。无论如何.. :) 我们怎么知道调用方在被调用方有系统级权限? developer.android.com/reference/android/content/… 您在服务上调用它。如果您使用 IPC 通过 Binder 处理请求,它将返回调用应用程序的权限。 如前所述,IPC 仅在 2 个系统服务之间调用。 你想要的不存在,缺少一个定制的 Android 版本。这是最接近的。以上是关于系统服务之间的 Android IPC 安全性的主要内容,如果未能解决你的问题,请参考以下文章
为什么 Android 要采用 Binder 作为 IPC 机制?
2017-2018-1 20155222 《信息安全系统设计基础》第10周 Linux下的IPC机制