Oauth 2.0: identificación del cliente y secreto del cliente expuestos, ¿es un problema de seguridad?

Cuando una aplicación cliente de Android oauth 2.0 tiene sus credenciales (ID de cliente y secreto del cliente), es muy fácil descompilar la aplicación y recuperar las credenciales.
¿Cuáles son las consecuencias al exponer el ID del cliente y el secreto ?

Sé que esto no será una buena respuesta StackOverflow, pero no me siento capaz de explicar mejor que el modelo de amenaza y las consideraciones de seguridad (RFC 6819). Así que aquí está el párrafo sobre la obtención de un secreto de cliente y sus consecuencias relativas.

Tenga en cuenta que una aplicación para Android es un cliente público (una aplicación nativa para ser más específica), por lo que, como usted dice, no puede mantener sus credenciales confidenciales, pero sigue siendo capaz de proteger Tokens y el código de autorización.

También interesante para su caso es un ejemplo sobre los teléfonos inteligentes .

Sé que los RFC no son la lectura más divertida, pero son bastante claros.

De acuerdo con esto es una cuestión de seguridad: http://software-security.sans.org/blog/2011/03/07/oauth-authorization-attacks-secure-implementation

En caso de que el enlace deje de funcionar, aquí está lo que dice:

La dependencia de OAuth en la autorización basada en navegador crea un problema de implementación heredada para aplicaciones móviles o de escritorio que, por defecto, no se ejecutan en el navegador del usuario. Además, desde una perspectiva puramente de seguridad, la principal preocupación es cuando los implementadores almacenan y ofuscan la combinación clave / secreto en la propia aplicación cliente. Esto hace que la rotación de las teclas sea casi imposible y permite el acceso no autorizado al código fuente o binario descompilado donde se almacena el secreto del consumidor. Por ejemplo, para comprometer las credenciales del cliente para el cliente de Twitter en Android, un atacante puede simplemente desensamblar el class.dex con la herramienta disembler de Android, dexdump:

dexdump - d classes.dex 

Lo anterior entra en mucho más detalle y es una lectura muy buena.

Sólo una observación: el ID del cliente no es un secreto por diseño, por lo que en realidad no hay necesidad de protegerlo.

Consulte la sección 2.2 en RFC 6749 ("El marco de autorización de OAuth 2.0"):

El identificador del cliente no es un secreto; Está expuesto al propietario del recurso y NO DEBE ser utilizado solo para la autenticación del cliente.

  • Proteger la cadena constante contra la ingeniería inversa
  • Cifrado del dispositivo Android ICS
  • Cómo ocultar la clave pública en android?
  • Protección de contraseña de Android Keystore
  • ¿Cómo detecta la aplicación Android SuperUser que una aplicación solicite root?
  • Seguridad de base de datos Sqlite
  • ¿Es posible escribir un wifi cracking util para teléfonos Android? Modo de monitor vs Multicast?
  • Uso de la seguridad de Android KeyChain
  • SecurityException - Nombre del paquete de llamadas desconocido -Android 6.0.1
  • Seguridad de SharedPreference de Android
  • Pregunta sobre la seguridad del depurador
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.