безопасность облачных сообщений гугл

Компания создает проект и получает идентификатор отправителя. Компания создает приложение, запекает его идентификатор отправителя и размещает приложение в магазине.

Злоумышленник реконструирует приложение и извлекает как идентификатор отправителя, так и интерфейс сервера, используемый для получения регистрационных идентификаторов GCM.

Злоумышленник создает собственное приложение, встраивает идентификатор отправителя компании и интерфейс регистрации сервера, размещает приложение в магазине. Атакующее приложение в основном выдает себя за настоящее приложение компании в том, что касается GCM: оно регистрируется для получения сообщений от идентификатора отправителя компании, а затем отправляет свой регистрационный идентификатор GCM на серверы компании, как это делает «настоящее» приложение.

Теперь компания хочет передать некоторую информацию всем экземплярам своего приложения. Возможно, это напоминание о том, что доступно обновление. Есть ли способ отличить «атакующее приложение» (которое зарегистрировано так же, как настоящее) от «настоящих» версий приложения Компании?


person jph    schedule 05.07.2012    source источник
comment
Хороший вопрос, но, вероятно, OT здесь.   -  person ceving    schedule 22.03.2017


Ответы (7)


Та же проблема могла возникнуть и с C2DM, где вы можете прослушивать адрес электронной почты отправителя вместо идентификатора проекта для GCM.

C2DM или GCM никогда не следует использовать для отправки конфиденциальной информации о пользователе (например, имя учетной записи, личная информация и т. д.), это в основном полезно для уведомления, которое реальное приложение может использовать для выполнения дальнейших действий.

Я не понимаю, насколько полезным может быть уведомление для приложения «подделка/взлом», что они собираются делать с уведомлением «У вас есть новое сообщение»?

person azgolfer    schedule 06.07.2012
comment
у вас есть источники? - person Schiavini; 03.03.2014

Я думаю, что из вашего сценария злоумышленник не может отправить сообщение пользователю, даже если у него есть регистрационный идентификатор. Сервер компании, который отправляет сообщения, необходимые для аутентификации (OAuth2), сначала регистрируется через Google. Таким образом, только если злоумышленник знает пароль отправляющей стороны и регистрационный идентификатор, он может отправить пользователя. Но пароль отправляющей стороны, конечно же, никогда не отправляется на сторону клиента.

person Raz    schedule 06.07.2012

ну, это может работать даже в отладочной версии приложения злоумышленника, но он не может разместить свое приложение в магазине. частью идентификации GCM является идентификатор приложения, который должен быть уникальным в магазине.

person SimonSays    schedule 05.07.2012

Идентификатор регистрации GCM запрашивается Google, запрашивается из приложения и отправляется на ваш сервер. Когда кто-то с другим приложением (но с тем же идентификатором отправителя) создает Regid, его все равно нужно зафиксировать на сервере, и сначала вы должны явно отправить сообщение этому конкретному regid.

Установка приложения, законная или нет, никогда не может получать сообщения, для которых она не авторизована. (При условии, что вы объявляете и используете разрешение C2D_MESSAGE)

person Robin Kanters    schedule 02.12.2012

На самом деле, Google позволяет вам зарегистрировать ключ сервера для GCM, который позволяет вам вносить IP-адреса сервера в белый список ... Таким образом, вы должны добавить свой IP-адрес сервера, и вы будете в безопасности, поскольку только ваш сервер может отправлять сообщения с этим ключом.

person Juanu    schedule 31.03.2013

В этом случае GCM безопасен.
Вы даже не можете использовать свой идентификатор отправителя в исходном приложении, пока не зарегистрируете приложение в GoogleApiConsole. Это означает, что вы указываете отпечаток закрытого ключа в GoogleApiConsole. Достаточно.

person StanislavKo    schedule 04.12.2013

Я бы предложил иметь свой собственный «промежуточный сервер», который использует ключ API (идентификатор отправителя, как вы его назвали). Вместо того, чтобы встраивать его в само приложение.

person Francois    schedule 12.08.2015