【问题标题】:Android binder - Limit binder calls to one processAndroid binder - 将 binder 调用限制为一个进程
【发布时间】:2019-10-17 18:14:30
【问题描述】:

我有一个通过 binder (AIDL) 与本机进程交互的 Android Java 服务。

我看到该服务列在“adb shell 服务列表”下。我也可以使用“adb shell service start 1 xxx”向该服务发送命令。

为了解决这个问题,我希望仅在此特定 Java 服务和本机进程之间进行绑定 IPC 事务。

我在任何地方都找不到任何确凿的信息。非常感谢这方面的任何帮助。

【问题讨论】:

  • SE Linux 是否处于强制或许可模式?检查 getenforce 的输出。通常,您必须通过 SE Linux 规则显式地允许服务之间的交互,因此我假设这是在 SE Linux 以许可模式运行的调试映像上。

标签: android android-binder


【解决方案1】:

可以使用 SELinux 控制绑定器接口的访问。

根据您使用的是binder 还是vdbinder,您可以在service_contextsvndservice_contexts 文件中定义服务上下文,如下所示:

myservice      u:object_r:myservice_[vnd]service:s0

注意myservice 是您在defaultServiceManager()->addService() 中提供的名称

现在您可以在.te 策略文件中明确定义允许哪个进程访问myservice

示例:允许myclient访问myservice

allow myclient myservice_[vnd]service:service_manager find
[vnd]binder_use(myclient)
binder_call(myclient, myservice_[vnd]service)

您可以找到更多信息here

【讨论】:

    猜你喜欢
    • 2014-10-20
    • 2015-09-16
    • 1970-01-01
    • 2013-04-07
    • 1970-01-01
    • 2022-11-28
    • 1970-01-01
    • 2016-11-02
    • 2012-09-12
    相关资源
    最近更新 更多