带有权限的startService()

时间:2015-08-03 16:29:23

标签: android security service

所以我注意到没有startService()的变种接受权限。 这不是很危险吗?

我想象了以下简单的攻击场景:

  1. AppA 使用“myApp.serviceClass”上的显式意图调用startService。此服务类将以 AppB 导出,必须单独安装。
  2. 攻击者可能会创建 AppB 的恶意版本。后者会将“myApp.serviceClass”导出为服务,然后在 AppA 调用startService()时劫持意图中包含的数据。
  3. 我错过了什么吗?我期待一些startService()的变体,它要求目标应用拥有特定的权限,就像sendBroadcast(意图,权限)一样。 你会如何防止这种干扰?

    谢谢!

1 个答案:

答案 0 :(得分:0)

  

我错过了什么吗?

是。许可不能解决问题,因为攻击者只是声明他们持有相关权限。在Android 4.4及更低版本,if the attacker is installed first, the user might not even know about this。或者,用户可以盲目地同意许可。

  

你会如何防止这种干扰?

客户有责任验证服务是否正确实施。一种解决方案是验证用于签署服务的APK文件的签名密钥,将其与已知值进行比较。我的CWAC-Security图书馆为此目的a SignatureUtils class。这个pair of sample projects说明了这种方法。