16

场景:假设通过对文件进行逆向工程.apk,攻击者获得了SENDER ID应用中使用的推送注册服务。攻击者开发了一个类似的假应用程序,该应用程序具有相同/不同的包名称,并且已上传到与 Google Play 不同的应用商店。

我的问题:他/她可以在应用程序中使用相同的 SENDER ID 吗?这对安装该虚假应用程序的用户有什么影响?

相关问题: 谷歌云消息安全问题似乎有点相似。还回答了Android GCM:更多应用程序问题的相同发件人 ID 提供了有价值的信息。阅读两个公认的答案,结论似乎是绝对有可能,这就是为什么建议不要在推送消息中包含敏感数据的原因。

但这似乎不是问题的解决方案。我无法理解上述安全漏洞的影响。

4

2 回答 2

18

发件人 ID(又名 Google API 项目 ID)与唯一的应用程序包名称无关。事实上,多个应用程序可以使用相同的发件人 ID 注册到 GCM,这将允许使用相同的 API 密钥向所有这些应用程序发送 GCM 消息。当然,每个应用程序都会有不同的注册 ID(即使在同一设备上)。

如果有人知道您的发件人 ID,他们可以使用该发件人 ID 注册到 GCM,但在不知道 API 密钥的情况下,他们将无法将 GCM 消息发送到假应用程序或真实应用程序。当他们注册到 GCM 时,GCM 会收到他们假应用的包 ID。因此,如果您向真实应用的注册 ID 发送消息,它不会到达假应用。为了让假应用程序从您的服务器获取消息,它需要将自己的注册 ID 发送到您的服务器并欺骗您的服务器,使其相信它是真正的应用程序。在我们的服务器应用程序中,您必须提及我们的 API 密钥。如果您想发送任何需要的通知。

于 2013-08-13T18:01:29.723 回答
1

他们将无法使用您的 GCM 发件人 ID 发布通知。

请记住,当您获得 Sender ID 时,您还必须提交应用程序的包名称和发布签名密钥的 SHA-1 签名。该签名绑定到 GCM 发件人 ID,因此只有由您的发布密钥签名的应用程序才能注册和接收 GCM 通知。

Google Play 也不允许发布具有重复包名的应用程序,因此没有人可以使用您在 Play 商店中的包名创建虚假应用程序。

但是,没有什么是 100% 安全的。我认为黑客还可以找出您的 SHA-1 签名密钥并破解 APK,从而欺骗系统认为该应用程序是由您的发布密钥签名的。我已经看到应用程序以这种方式“破解”以规避 Android 许可库。这可能会使 GCM 服务器误以为假应用已被授权接收 GCM 消息。但是,“破解”的应用程序仍然不允许发布到 Google Play,因此合法用户获得它的风险很小。

于 2013-08-13T17:32:46.557 回答