Oauth 2.0: client id e segreto client esposti, è un problema di sicurezza?

Quando un'applicazione client Android oauth 2.0 ha le sue credenziali (client ID e client secret) codificato è molto facile da decompilare l'applicazione e recuperare le credenziali.
Quali sono le conseguenze nell'esposizione del client ID e del segreto ?

  • Trova l'hash chiave per un'applicazione firmata
  • come effettuare la chiamata httpPost con il corpo codificato json?
  • La tastiera morbida di Android si nasconde per nessun motivo
  • Errore: avvio di mediaplayer avviato in stato 0 errore (-38,0)
  • Utilizzo di jdbc in android
  • Metodo Swizzling in Android utilizzando java
  • Un progetto Android per Eclipse e Android Studio
  • come accedere alla cartella di download in android?
  • Ricerca accentata in sqlite (android)
  • Qual è il vantaggio di utilizzare frammenti in Android, piuttosto che Views?
  • Android gioca il video di youtube in webview
  • Come applicare FontSize in modo dinamico e programmato senza utilizzare XML in Android?
  • 3 Solutions collect form web for “Oauth 2.0: client id e segreto client esposti, è un problema di sicurezza?”

    So che questa non sarà una buona risposta StackOverflow, ma non mi sento in grado di spiegarla meglio del model di rischio e di sicurezza (RFC 6819). Quindi ecco il paragrafo di get un segreto del cliente e le relative conseguenze.

    Si noti che un'applicazione Android è un client pubblico (un'applicazione nativa per essere più specifica) pertanto, come si dice, non riesce a mantenere riservate le credenziali, ma ancora in grado di proteggere i codici e il codice di authorization.

    Anche interessante per il tuo caso è un esempio di smartphone .

    So che RFC non sono la lettura più divertente, ma sono abbastanza chiari.

    Secondo questo è un problema di sicurezza: http://software-security.sans.org/blog/2011/03/07/oauth-authorization-attacks-secure-implementation

    Nel caso in cui il collegamento smette di funzionare, ecco quello che dice:

    La dipendenza di OAuth da un'authorization basata su browser genera un problema di implementazione ereditaria per applicazioni mobili o desktop che per impostazione predefinita non vengono eseguite nel browser dell'utente. Inoltre, da una prospettiva di sicurezza pura, la preoccupazione principale è quando gli implementatori memorizzano e nascondono la combinazione chiave / segreta nell'applicazione Client stessa. Ciò rende la rotazione della chiave quasi imansible e consente l'accesso non autorizzato al codice sorgente o al binario where il segreto del consumatore è memorizzato. Ad esempio, per compromettere le credenziali client per il client di Twitter su Android, un utente malintenzionato può semplicemente disassemblare classi.dex con lo strumento di distriggerszione Android, dexdump:

    dexdump - d classs.dex 

    Quanto sopra è molto più dettagliato ed è una bella lettura.

    Solo un'osservazione: l'ID cliente non è un segreto per progettazione, quindi in realtà non c'è bisogno di proteggerlo.

    Vedere la sezione 2.2 in RFC 6749 ("The OAuth 2.0 Authorization Framework"):

    L'identificatore client non è un segreto; è esposto al proprietario della risorsa e NON DEVE essere utilizzato da solo per l'authentication client.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.