сигурност на съобщенията в облака на google

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

Нападателят прави обратен инженеринг на приложението и извлича както идентификатора на изпращача, така и интерфейса на сървъра, използван за получаване на регистрационни идентификатори на GCM.

Нападателят създава свое собствено приложение, включва идентификатора на изпращача на компанията и интерфейса за регистрация на сървъра, поставя приложението в магазина. Приложението за атака основно имитира истинското приложение на компанията, що се отнася до GCM: то се регистрира, за да получава съобщения от ID на изпращача на компанията и след това изпраща своя регистрационен идентификатор за GCM на сървърите на компанията, точно както прави „истинското“ приложение.

Сега Компанията иска да излъчи известна информация до всички копия на приложението си. Може би е напомняне, че има налична актуализация. Има ли някакъв начин да се разграничи „приложението за атака“ (което се регистрира точно като истинското) от „реалните“ версии на приложението на компанията?


person jph    schedule 05.07.2012    source източник
comment
Хубав въпрос, но вероятно OT тук.   -  person ceving    schedule 22.03.2017


Отговори (7)


Същият проблем може да съществува и с C2DM, който можете да подушите имейл адреса на изпращача, вместо ID на проекта за 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, изисква се от приложението и се изпраща на вашия сървър. Когато някой с различно приложение (но със същия ID на подател) създаде Regid, той все още трябва да бъде ангажиран към сървъра и първо трябва изрично да изпратите съобщение до този конкретен regid.

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

person Robin Kanters    schedule 02.12.2012

Всъщност Google ви позволява да регистрирате сървърен ключ за GCM, което ви позволява да поставите в белия списък IP адресите на сървъра... Така че трябва да добавите вашия IP адрес на сървъра и ще сте в безопасност, тъй като само вашият сървър има право да изпраща съобщения с този ключ.

person Juanu    schedule 31.03.2013

GCM е безопасен в този случай.
Дори не можете да използвате своя ID на подател в оригиналното си приложение, преди да регистрирате приложението в GoogleApiConsole. Това означава, че посочвате отпечатък на частен ключ в GoogleApiConsole. Това е достатъчно.

person StanislavKo    schedule 04.12.2013

Бих предложил да имате свой собствен "междинен сървър", който използва API ключа (идентификатор на подател, както го споменахте). Вместо да го вградите в самото приложение.

person Francois    schedule 12.08.2015