【问题标题】:google cloud messaging security谷歌云消息安全
【发布时间】:2012-07-05 21:07:42
【问题描述】:

公司创建一个项目并接收一个发件人 ID。公司创建了一个应用程序,输入其发件人 ID 并将该应用程序放置在商店中。

攻击者对应用进行逆向工程并提取发送者 ID 和用于接收 GCM 注册 ID 的服务器接口。

攻击者创建自己的应用程序,烘焙公司的发件人 ID 和服务器注册接口,将应用程序放入商店。就 GCM 而言,攻击应用程序基本上模仿了 Company 的真实应用程序:它注册以接收来自 Company 的发件人 ID 的消息,然后将其 GCM 注册 ID 发送到 Company 的服务器,就像“真实”应用程序一样。

现在公司想要向其应用的所有实例广播一些信息。也许这是一个提醒,而不是可用的更新。有什么方法可以区分“攻击应用程序”(注册方式与真实应用程序一样)与公司应用程序的“真实”版本?

【问题讨论】:

  • 问得好,但这里可能有点过时了。

标签: android security android-c2dm google-cloud-messaging


【解决方案1】:

我认为从您的情况来看,即使攻击者拥有注册 ID,攻击者也不可能向用户发送消息。发送他们需要进行身份验证(OAuth2)的消息的公司服务器首先通过谷歌帐户。因此,只有攻击者知道发送方的密码和注册 id 才能发送用户。但是发送方的密码当然是永远不会发送给客户端的。

【讨论】:

    【解决方案2】:

    好吧,这甚至可能在攻击者应用程序的调试版本中工作,但他不能将他的应用程序放入商店。 GCM 标识的一部分是应用 id,它需要在商店中是唯一的。

    【讨论】:

      【解决方案3】:

      C2DM 也可能存在同样的问题,您可以通过它嗅探发件人的电子邮件地址,而不是 GCM 的项目 ID。

      C2DM 或 GCM,不应该用于发送敏感的用户信息(即帐户名、私人信息等),它主要用于通知,真正的应用程序可以使用它来执行进一步的操作。

      我看不出通知对“虚假/黑客”应用有多大用处,他们将如何处理“您有新消息”通知?

      【讨论】:

      • 你有任何消息来源吗?
      【解决方案4】:

      GCM 注册 ID 由 Google 请求,从应用程序请求并提交到您的服务器。当使用不同应用(但发件人 ID 相同)的人创建 Regid 时,仍必须将其提交到服务器,并且您首先必须明确向该特定 regid 发送消息。

      应用安装,无论是否合法,都不会收到未经授权的消息。 (前提是您声明并使用了C2D_MESSAGE 权限)

      【讨论】:

        【解决方案5】:

        实际上,谷歌让你为 GCM 注册一个服务器密钥,它可以让你将服务器 IP 列入白名单...... 所以你应该添加你的服务器 IP 并且你会很安全,因为只有你的服务器被允许使用该密钥发送消息。

        【讨论】:

          【解决方案6】:

          GCM 在这种情况下是安全的。
          在您在 GoogleApiConsole 中注册应用程序之前,您甚至无法在原始应用程序中使用您的发件人 ID。这意味着您在 GoogleApiConsole 中指向私钥指纹。够了。

          【讨论】:

            【解决方案7】:

            我建议您拥有自己的“临时服务器”,它使用 API 密钥(您所指的发件人 ID)。而不是将其嵌入应用程序本身。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-10-04
              • 2016-04-21
              • 2016-12-05
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多