谷歌云消息安全

Posted

技术标签:

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

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

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

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

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

【问题讨论】:

问得好,但这里可能有点过时了。 【参考方案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)。而不是将其嵌入应用程序本身。

【讨论】:

以上是关于谷歌云消息安全的主要内容,如果未能解决你的问题,请参考以下文章

Fortinet 荣膺谷歌云年度安全技术合作伙伴奖

监控谷歌云消息服务

GCM 问题(谷歌云消息)

谷歌云消息沙盒

Android:谷歌云消息传递错误

谷歌云消息业务设置