【问题标题】:What are consequences of having GCM SENDER ID being exposed?暴露 GCM SENDER ID 的后果是什么?
【发布时间】:2013-08-14 07:31:37
【问题描述】:

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

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

相关问题: google cloud messaging security 问题似乎有点相似。 Android GCM: same sender id for more application 问题的回答也提供了有价值的信息。阅读两个公认的答案,结论似乎是绝对有可能,这就是为什么建议不要在推送消息中包含敏感数据的原因。

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

【问题讨论】:

    标签: java android push-notification google-cloud-messaging


    【解决方案1】:

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

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

    【讨论】:

    • 所以,这意味着如果黑客以某种方式知道了我的服务器 URL(应该隐藏),他可以在我的服务器上注册注册 ID,并且每当我的服务器决定向所有人发送推送消息时应用,假应用也会收到推送消息。
    • 感谢您的回答。它确实帮助我理解了,但现在根据您的回答,我还有一个额外的担忧。很可能在我的应用程序的某个地方我会提到服务器 URL,以便我的应用程序可以向我发送注册 ID。是否可以在服务器端进行一些检查以确保 POST 请求仅来自我的原始应用程序而不是来自假应用程序?如果我的问题听起来过于直截了当,我深表歉意,但我无法以某种方式想象这一点。
    • @ShobhitPuri 没错,除非您的应用在联系您的服务器时有办法证明其身份。
    • 我自己还是有点困惑。是否存在窃听推送通知可能导致安全风险的情况?是否只有在通知中有敏感信息时,如果是这样,这是否意味着 真正的 包罗万象的解决方案是永远不要在推送中发送敏感信息(因此它不假冒应用是否会欺骗您的 ID)?
    • @JasonC 听起来不错。由于其他应用程序可以接收消息,因此也可以看到您的推送消息的内容。所以不应该把敏感信息放在那里。
    【解决方案2】:

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

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

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

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

    【讨论】:

    • 将您的答案与@Eran 结合起来,我的理解是,虽然多个应用程序可以使用相同的SENDER ID,但只有那些由我的发布密钥签名的应用程序。但是,一旦我在控制台上创建了一个新项目,Google 就给了我一个发件人 ID。然后,我按照here 的说明打开了 Google Cloud Messaging,并在我的应用程序中使用了该 ID。我不太了解它与发布密钥的关系。
    • 另外,如果黑客的应用与 Google Play 位于不同的应用商店,该怎么办?我读过一篇文章,声称很少有破解/假冒应用从 Google Play 以外的应用商店下载超过 50 万次。
    猜你喜欢
    • 2017-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多