11

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

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

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

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

4

7 回答 7

3

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

于 2012-07-06T05:48:06.643 回答
2

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

于 2012-07-05T21:14:43.827 回答
1

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

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

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

于 2012-07-06T03:24:11.367 回答
1

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

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

于 2012-12-02T21:33:36.850 回答
0

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

于 2013-03-31T03:11:55.323 回答
0

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

于 2013-12-04T10:09:58.507 回答
0

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

于 2015-08-12T18:12:22.223 回答