系统服务之间的 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 机制?

Android中的IPC进程通信方式第一篇

2017-2018-1 20155222 《信息安全系统设计基础》第10周 Linux下的IPC机制

Android进程间通信机制Binder学习

Android - IPC之ContentProvider简介

操作系统:进程通信(IPC)