No pongas tus tokens oAuth en tus apps para Android

Cuando los investigadores de la Universidad de Columbia publicaron su trabajo referente a PlayDrone, una de las cosas que más revuelo causó fue su aviso sobre la cantidad de apps que están guardando sus tokens OAuth y sus API Keys de Amazondirectamente en las apps.

Número de tokens por tipo descubiertos en apps de Google Play
Número de tokens por tipo descubiertos en apps de Google Play

En el artículo de The Register, los mismos autores del trabajo decían que Googleestaba trabajando en añadir una alerta que avise a un desarrollador cuando una de sus apps lleve hardcodeado uno de estos tokens, para que sea consciente del riesgo que corre.

Para encontrar esos tokens, no es necesario ni irse a Google Play a buscar las appsy decompilarlas, ya que simplemente haciendo un poco de hacking con buscadores en los repositorios de código habituales es más que suficiente para localizar códigos fuentes con el OAuth_Token y el OAuth_Token_Secret a la vista de cualquiera. Algo similar a cuando se buscan bugs en repositorios de código open source.

Tokens OAuth publicados en repositorios de código
Tokens OAuth publicados en repositorios de código

Al final, cuando se da un OAuth_Token y un OAuth_Token_Secret a una app se le está concediendo una especie de contraseña que da acceso a una cuenta con una lista de permisos. Esos permisos pueden ser acceder a información personal, hacer una publicación, hacer un follow a otra persona de una red social, dar un like, acceder a la lista de contactos, leer y escribir mensajes privados, etcétera.

Cuando se pone un token OAuth en una app que va a ser instalada en miles de dispositivos, se está dando un acceso común a una misma cuenta a todos los dispositivos que hayan descargado y ejecutado esa app, lo que no parece tener mucho sentido. Si uno de esos comienza a hacer un mal uso del token, la única forma de detenerlo será generar un nuevo token y desplegar una nueva versión de la app, algo que va contra cualquier sentido común.

Esquema de gestión centralizada server-side del token de acceso a cuenta
Esquema de gestión centralizada server-side del token de acceso a cuenta

Si se quiere que desde una app que está instalada en muchos dispositivos se pueda hacer cosas en una cuenta por medio de un token OAuth, lo suyo es crear un servicio que controle el uso del token y que monitorice qué es lo que quiere hacer cada usuario con la cuenta. Así, si uno de los usuarios comienza a hacer un uso malicioso o simplemente no autorizado, se puede restringir su acceso.

Si pones los tokens en las apps, o se los envías, o cualquier otra cosa que acabe con que muchas apps instaladas en clientes acaben teniendo el mismo token, ya sabes a todos los riesgos que te expones. Si vas a hacer una app para subir a Google Play, antes aprende buenas prácticas de desarrollo seguro de apps para Android.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s