谷歌云消息安全

时间:2012-07-05 21:07:42

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

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

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

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

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

7 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

好吧,这甚至可以在攻击者应用程序的调试版本中运行,但他不能将他的应用程序放在商店中。 GCM标识的一部分是应用ID,它必须在商店中是唯一的。

答案 2 :(得分:1)

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

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

我看不出通知对“假冒/黑客”应用程序有多大用处,他们会对“你有新消息”通知做些什么?

答案 3 :(得分:1)

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

应用程序安装,无论是否合法,都无法接收未经授权的邮件。 (如果您声明并使用C2D_MESSAGE权限)

答案 4 :(得分:0)

实际上,google让你为GCM注册一个服务器密钥,它可以让你使用White-List Server IP ... 所以你应该添加你的服务器IP,你会很安全,因为只允许你的服务器发送带有该密钥的消息。

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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