2013-08-12 14 views
13

Scenario: Supponendo di eseguire il reverse engineering di un file .apk, un utente malintenzionato ottiene SENDER ID per il servizio di registrazione push utilizzato in un'app. L'autore dell'attacco sviluppa un'applicazione similare simile che ha lo stesso nome di pacchetto/diverso ed è stata caricata su un app store diverso da Google Play.Quali sono le conseguenze dell'essere esposto a GCM SENDER ID?

La mia domanda: È possibile utilizzare lo stesso ID SENDER con l'app? Quali sono le implicazioni di ciò per l'utente che installa quella falsa applicazione?

Domande correlate:google cloud messaging security la domanda sembra essere un po 'simile. Anche la risposta della domanda Android GCM: same sender id for more application fornisce informazioni preziose. Leggendo entrambe le risposte accettate, la conclusione sembra essere che sia assolutamente possibile ed è per questo che si raccomanda di non avere dati sensibili in Messaggi Push.

Ma non sembra essere la soluzione al problema. Non sono in grado di comprendere l'effetto del suddetto errore di sicurezza.

risposta

14

Un ID mittente (ovvero l'ID progetto API di Google) non è legato a un nome di pacchetto dell'applicazione univoco. Di fatto, più app possono registrarsi a GCM utilizzando lo stesso ID mittente, che consente di utilizzare la stessa chiave API per inviare messaggi GCM a tutte queste app. Ovviamente ogni app avrà un ID di registrazione diverso (anche se sullo stesso dispositivo).

Se qualcuno conosce l'ID del mittente, può registrarsi a GCM con quell'ID del mittente, ma senza conoscere la chiave API non sarà in grado di inviare messaggi GCM all'app falso o all'app reale. Quando si registrano a GCM, GCM riceve l'ID del pacchetto della loro app falsa. Pertanto, se invii un messaggio a un ID di registrazione della tua vera app, questa non raggiungerà l'app falsa. Affinché l'app contraffatta possa ricevere messaggi dal tuo server, dovrà inviare il proprio ID di registrazione al server e ingannare il server facendogli credere che si tratti della vera app. Nella nostra applicazione server devi menzionare la nostra chiave API. Se vuoi inviare qualsiasi notifica è necessario.

+0

Quindi, questo significa che se l'hacker viene in qualche modo a sapere l'URL del mio server (che dovrebbe essere nascosto), può registrare l'ID di registrazione con il mio server e ogni volta che il mio server decide di inviare il messaggio push a tutte le app, le app false anche ricevere il messaggio push. –

+0

Grazie per la tua risposta. Mi ha aiutato a capire, ma ora ho una preoccupazione aggiuntiva in base alla tua risposta. È probabile che da qualche parte nella mia app menzioni l'URL del server, in modo che la mia app possa inviarmi l'ID di registrazione. Ci può essere qualche controllo sul lato server che assicuri che la richiesta POST provenga solo dalla mia app originale e non dall'app falso? Mi scuso se le mie domande sembrano troppo semplici, ma non sono in grado di visualizzarle come. –

+0

@ShobhitPuri È corretto, a meno che la tua app non abbia modo di dimostrare la sua identità quando contatta il tuo server. – Eran

1

Non saranno in grado di utilizzare l'ID mittente GCM per pubblicare notifiche.

Ricordare che quando si ottiene l'ID mittente, è necessario anche inviare il nome del pacchetto dell'applicazione e la firma SHA-1 della chiave di firma del rilascio. Tale firma è legata all'ID mittente GCM in modo che solo le applicazioni firmate dalla chiave di rilascio siano in grado di registrarsi e ricevere notifiche GCM.

Google Play non consente inoltre la pubblicazione di app con nome di pacchetto duplicato, quindi nessuno può creare un'app falso con il nome del pacchetto già presente nel Play Store.

Tuttavia, niente è protetto al 100%. Presumo che un hacker potrebbe anche capire la tua chiave di firma SHA-1 e hackerare l'APK in modo tale da ingannare il sistema per pensare che l'app sia firmata dalla tua chiave di rilascio. Ho visto che le app sono "incrinate" in questo modo per aggirare la libreria delle licenze Android. Ciò potrebbe potenzialmente ingannare il server GCM per pensare che l'app falsa sia autorizzata a ricevere messaggi GCM. Tuttavia, le app "crackate" non possono ancora essere pubblicate su Google Play, quindi il rischio che gli utenti legittimi possano ottenerle è piuttosto ridotto.

+0

Combinando la tua risposta con @Eran, quello che ho capito è che anche se più app possono utilizzare lo stesso ID SENDER ma solo quelle che sono firmate dalla mia chiave di rilascio. Ma non appena ho creato un nuovo progetto su console, Google mi ha dato un ID mittente. Quindi ho appena attivato Google Cloud Messaging come indicato [qui] (http://developer.android.com/google/gcm/gs.html) e ho utilizzato quell'ID nella mia app. Non ho abbastanza il suo coinvolgimento con la chiave di rilascio. –

+0

Inoltre, che succede se l'app dell'hacker si trova in un app store diverso da Google? Ho letto un articolo in cui si afferma che alcune app incrinate/contraffatte sono state scaricate da app store diverse da Google che riproducono oltre mezzo milione di volte. –

Problemi correlati