Texto publicado por Paris N. Salguero

Vulnerabilidad importante en TWBlue, explicación de como funciona

Creo que por las preguntas que me han llegado a mi correo y por privado es necesario explicar esto un poco mejor, para que todos entendamos como es que funciona esta vulnerabilidad y por qué es tan peligrosa

Creo que deberé empezar con un poco de letanía informativa que espero no aburra y se entienda...
Para que un programador pueda crear una app para Twitter, ya sea para la compu, el celu o lo que sea, debe crear primero una cuenta de programador en la web de Twitter Developers; luego debe registrar su aplicación con varios datos que Twitter pide, configurar a que cosas accederá esa app y al final Twitter nos da algo como un usuario y contraseña mega larguísimos que servirán para identificar nuestra app y permitir que interactúe con Twitter
Ya que tenemos esta información, debemos hacer que nuestra aplicación consulte un servicio web que Twitter ofrece para interactuar directamente con su sistema que se llama API, a este API debemos decirle que es lo que queremos hacer exactamente, para que cuenta y además identificar nuestra app con la info que se nos dio antes, ese como usuario y contraseña larguísimos... entonces si yo quiero que mi app mande un twit de un usuario, primero debo decirle al API que estoy intentando crear un nuevo twit, luego le digo de que usuario es ese twit, el contenido del mismo y por último le digo que app lo intenta hacer identificándome
Bueno, el punto aquí es que para que yo pueda empezar a interactuar con la info del usuario, primero debo de obtener permiso de ese usuario, es lo que se conoce como autenticación oauth, consiste en que mi app le dice a Twitter que alguien quiere iniciar sesión usando mi app, le mando mi mega usuario y contraseña que identifica mi app y Twitter me devuelve un código generado de forma aleatoria en ese momento para que yo confirme los datos del usuario, entonces yo debo de enviar al API de Twitter el nombre de usuario junto con este código que me acaba de mandar para poder asegurrar que el inicio de sesión sea legítimo, entonces Twitter verifica que todo esté bien y me devuelve ahora un usuario y contraseña mega larguísimos de nuevo que son los que identifican al usuario en mi app, esto se llama token y sirve para mantener segura la contraseña del usuario pues no se necesita poner la contraseña en mi app para poder iniciar sesión, tal como lo vemos en TWBlue, ni siquiera nos pide nuestro usuario, simplemente nos dirige a la web de Twitter y ahí ingresamos nuestros datos, por eso TWBlue nunca sabrá cual es nuestra contraseña
El problema radica en que ahora TWBlue y cualquier app para Twitter tiene algo mucho más poderoso que nuestra contraseña, tiene nuestro token de acceso, y cabe mencionar que para cada aplicación diferente Twitter genera un token de usuario diferente por lo que no podemos usar el token de la app de Twitter para Android en TWBlue y cosas así

Vale vale, espero se haya entendido un poco como es que funciona esto de la autenticación con las apps en Twitter, sigamos con la explicación de lo que pasa con TWBlue y por qué puede ser muy peligrosa la vulnerabilidad...
Entonces, este token resulta peligroso porque podríamos decir que es una sesión válida de nuestra cuenta, una vez obtenido este token nuestra app puede conectarse cuantas veces quiera y sin pedir confirmación porque ya está autorizada, creo que varios de ustedes ya se dieron cuenta del problema con esto
Como ese token representa una sesión ya iniciada y autorizada, ya no es necesario que la app vuelva a pedir autorización y por ende Twitter nunca vuelve a enviar el código de verificación a dos pasos, ni vuelve a pedir la contraseña ni nada, esto significa que si nosotros almacenamos ese token en un archivo, y ese archivo lo copiamos y lo usamos con la misma app pero en otra computadora, como la app sigue siendo la misma y el token es válido, tendremos acceso completo a la cuenta de esa persona sin tener que saber su contraseña y sin que le llegue la verificación a dos pasos
Este es el problema con TWBlue, la app almacena el token en un archivo dentro de la carpeta AppData de nuestra computadora, y cualquiera que tenga acceso a nuestra computadora puede acceder a esa carpeta y copiar nuestro token de sesión y con eso basta para que obtenga acceso a nuestra cuenta sin que nos demos cuenta, sin que nos avise Twitter ni nada de nada
Algunas apps, especialmente en Android, lo que hacen es cifrar ese token con el ID de nuestro dispositivo el cual es único, de esa manera se asegura el token para que solo pueda ser usado en ese dispositivo y no en otro, por eso es que a veces cuando hacemos un respaldo de nuestras apps y sus datos en Android, y luego lo restauramos en otro celular, por más que hayamos restaurado los datos aparece como si la aplicación se acabara de instalar y nos pide iniciar sesión de nuevo, es por esta medida de seguridad, pero TWBlue no hace nada similar para proteger este token de usuario

Hagamos una prueba, si tienen otra computadora a la mano, presionen Windows + R y ahí escriban %appdata%
En la ventana que se les abrió busquen la carpeta twblue
Ahora entren a esa carpeta y vean que hay algunos archivos y una o más carpetas que como nombre tienen puros números
Esa es su carpeta con toda la info de su sesión, su token, sus configuraciones de TWBlue y demás
Simplemente copien esa carpeta en una memoria USB y hagamos la magia...
Vayamos a la otra compu e instalemos TWBlue, pero no lo ejecutemos al finalizar la instalación, y si ya lo teníamos instalado vayamos a la carpeta AppData como antes y borremos la carpeta twblue por completo
Ahora hay que crear la carpeta twblue, y ahí pegamos la carpeta que copiamos de la otra compu
Finalmente ejecutamos TWBlue y vemos como nuestra sesión de la otra compu aparece, y podemos hacer todo como si nada, desde publicar twits, seguir y dejar de seguir personas, enviar y leer los mensajes directos, bueno, absolutamente todo lo que permita TWBlue sin restricciones...

Esto se debe como ya lo expliqué antes, a que lo que hay en esa carpeta es nuestro token de sesión sin protección alguna, lo cual permite usarlo en otros dispositivos para iniciar sesión, claro está siempre y cuando sea con TWBlue, el problema también es que como TWBlue cuenta con interfaz gráfica, cualquier persona, sea ciega o no, puede robar nuestra cuenta con este método y podría tener acceso
Esto también funciona si copiamos la carpeta twblue entera, solo que al hacerlo se almacenará absolutamente toda la info de TWBlue, historiales y demás

Aquí es donde radica el peligro de la vulnerabilidad, yo ya le reporté el problema a Manuel desde el 2015 cuando todo lo malo sucedió y robaron mis cuentas así, pero hasta ahora no se ha solucionado y honestamente no creo que se solucione nunca...