jueves, 20 de septiembre de 2012

Aplicaciones de Facebook y Privacidad (3 de 3)

Para lograr que con solo navegar a una determinada URL se genere un Access_Token con todos los permisos sin que el usuario los haya aceptado antes, realizando unas pruebas me topé con las aplicaciones desarrolladas por Facebook. Todas estas aplicaciones creadas por los mismos desarrolladores de Facebook no piden permisos al usuario debido a que para ellas no es necesario porque son del mismo Facebook. Algo como suele hacer Apple con sus aplicaciones o ... bueno, ya sabéis.

Esto lo puedes comprobar fácilmente ya que cuando cualquier aplicación en tu iPhone o Android quiere acceder a tus datos en Facebook es necesario darle los permisos, mientras que cuando usas Facebook para iOS o Facebook para Android esto no es así. Es decir, estas aplicaciones tiene una categoría especial que les permite acceso total a tus datos, o lo que es lo mismo, generar un Access_Token para ellas sin interactuar con el usuario. Las aplicaciones que son de Facebook son las que están en Facebook Apps y alguna otra más que no está por ahí.

Conocido esto, es posible suplantar la petición que hace Facebook para iPhone con el objetivo de conseguir un Access_Token con todos los permisos. Si miramos la petición que hace esta aplicación, se puede ver lo siguiente:
https://www.facebook.com/dialog/permissions.request?app_id=6628568379&next=https://facebook.com/connect/login_success.html&response_type=token
Como se puede ver, lo que devuelve esta URL es un Access_Token con todos los permisos para acceder a la cuenta del usuario. Esta es la redirección que se obtiene, con el Access_Token.
https://www.facebook.com/connect/login_success.html#access_token=AAAAAAYsX7TsBAEmjMvxnhzHd6EjaGrGZBnrVsYsdsac
HLGNDQiWhOtYHeJpAbA4[CENSORED]MBaodL8r6OsBe6EXkbG1hnumon0YP7xTAvnp
YFb&expires_in=87731
Y así, a lo tonto, en ese Acces_Token está el acceso a toda nuestra cuenta, es decir, como si fuera el usuario y la contraseña.

Figura 6: Surprise!

Una key que permite acceder a todos los datos de la cuenta. Por supuesto, para obtener ese Acces_Token de cualquier persona hace falta un poquito de ingeniería social, que haga clic en un enlace malicioso y conseguir el Access_Token de la respuesta mediante un script.

Como Facebook aun no ha hecho nada para corregir eso, la gente malvada y los empresarios de moral distraída y técnicas de Black SEO han comenzado a crear servicios en Internet que te ponen 1000 likes - como el tipo que se cambió el nombre por Mark Zuckerberg por ser baneado y denunciado por Facebook - en estados, fotos, comentarios, etcétera, debido a que almacenan miles de Access_Tokens y los usan para dar el servicio, es decir, te piden tu código y usan los códigos de los demás para darte el servicio, y así sucesivamente.

Hay miles de maneras de robarlo y las mass sencillas son mediante trucos de Phishing, o servicios  de engaño como saber quién usa tu perfil, eliminar la biografía, o saber cuentas que existen en Facebook. Si lo quieren hacer menos llamativos, a los Phishers les bastará con cambiar el esquema de Phishing y pedir a las víctimas que, en lugar de insertar la contraseña y el e-mail, inserte ese Access_Token para ver la información privada de una persona... o lo que se les ocurra.

Como prueba de concepto de la gravedad de esto programe una aplicación que permite realizar distintas funciones como leer los mensajes, ver notificaciones, actualizar estado, dar likes y más con solo ingresar el código de acceso, con la que jugué e hice muy popular algún post gracias a Acces_Tokens cedidos por amigos. Aquí una imagen del programa.

Figura 7: Extrayendo info de una cuenta con un Access_Token "robado"

En este caso, probando la aplicacón con mi cuenta, lo que hice es acceder a toda mi lista de contactos y mostrar el ID, el nombre del contacto - en otras palabras el e-mail de Facebook - y el e-mail de la persona - si no lo han ocultado -. En definitiva muestra a quién le gustaría que le suplanten la identidad en Facebook, ya que tiene el e-mail público - ¡Chema, ponlo público! -.

Seguramente a alguno le llamara la atención la imagen de la Foca allí. Es una función del Graph API de Facebook que se llama “metadata” y lo que hace es listar todas las URLs que contienen los datos del usuario. Y a mí me gusta la FOCA.

En definitiva, la creación de Access_Tokens sin validación por parte del usuario, simplemente suplantando el ID de una aplicación de Facebook es un bug demasiado gravé, del que estoy seguro que Facebook tiene constancia viendo las empresas que bloquea y demanda. Ahora hay que ver si con la difusión masiva lo cierran - aunque sería más engorroso para las aplicaciones Facebook -

Ariel Ignacio La Cono
ignataur@hotmail.com

*********************************************************************************

No hay comentarios:

Publicar un comentario