Cualquiera puede ver tu foto de perfil en Whatsapp

Dado que este es mi primer post en SbD, me presentaré.

Mi nombre es Alejandro Amo y trabajo como consultor IT empresarial. Abarco desde el marketing y la comunicación hasta el área de planificación y operaciones en sistemas de la información, pasando por la escritura y redacción comercial o la gestión de crisis de reputación online. En otras palabras: no soy precisamente un perfil 100% técnico.

Sin embargo, aunque no especializado en ella, siempre he estado en contacto con el mundo de la seguridad; puede que algunos me conozcan como alist3r, seudónimo bajo el cual he aportado como desarrollador en proyectos como Wifiway.


Ya presentado, entro en materia. Me temo que voy a realizar mi incursión en SbD con un post sobre Whatsapp, un tema muy tocado en SbD, pero no es para menos ya que la aplicación siempre ha dado que hablar desde su nacimiento. Hoy os traigo un juguete nuevo que nos ayudará a sacarle partido a todo lo que ya sabemos acerca de Whatsapp, y esperemos que también sirva como herramienta de concienciación del usuario promedio.

Estas pasadas navidades decidí, junto a berni69 (creador del famoso airwin), unir fuerzas y conocimientos para condensar en una web todo lo comentado en estas líneas, de manera que fuera fácil de comprender, de compartir y de usar, que tuviera impacto visual para la gente y que fuera sobre todo concienciadora y didáctica. De esta idea nace WhatsappVoyeur.

Whatsappvoyeur es un servicio web que permite a cualquier persona, incluso sin el uso de teléfono movil, obtener todos los datos de perfil de un determinado usuario de Whatsapp. En el momento de escribir estas líneas somos capaces de proporcionar los siguientes:

•Foto de perfil a tamaño real y fácil de descargar a disco como cualquier imagen de una web
•Frase de estado o "status quote"
•Último momento en que el usuario cambió la "status quote"
•Último momento en que el usuario apareció conectado en la red

Con ello pretendemos realizar la prueba de los siguientes conceptos y aplicaciones prácticas:

•Determinar si un usuario te ha bloqueado en Whatsapp (cotejando datos con tu movil)
•Capturar la foto de perfil a tamaño real (con mas detalle de lo que la gente cree cuando las elige)
•Controlar la actividad de un determinado usuario (controlar si está o no conectado)
•Demostrar que los datos de todos son quasi-públicamente accesibles debido a las políticas de Whatsapp (solo hace falta estar autenticado dentro de Whatsapp - la web conecta a Whatsapp usando conjuntos de credenciales válidas que hemos creado para la ocasión)

A los ojos de un seguidor de SbD, WaV no es más que una herramienta cómoda para hacer pruebas de concepto, curiosear y jugar un poco, pero como he dicho antes todo está pensado especialmente para concienciar y facilitar la experiencia del usuario menos avezado, con textos muy explicativos del concepto, así como una interfaz vistosa pero simple y fácil de usar, con "responsive design" para adaptarse tanto a móviles como PCs.

Mi experiencia con un grupo de pruebas de estos usuarios es positiva y les ha ayudado a entender la poca protección de sus datos en Whatsapp, y esa es precisamente la intención.

Tanto Berni69 como un servidor esperamos que os guste y que la utilicéis para jugar y curiosear ;) concienciar a los usuarios de estos temas tan importantes, ya que si la gente supiera que su foto de perfil en Whatsapp es prácticamente pública, se lo pensarían mas antes de ponerse fotos como esta...

WTF!

O igual no, ¿quién sabe? hay gente para todo... ;)

¿Cómo y por qué funciona WhatsappVoyeur?

Antes de nada debo rememorar uno de los problemas de Whatsapp que ya fué comentado aquí: los datos del perfil de los usuarios de Whatsapp eran completamente accesibles al público, mediante una simple consulta a una url. Ni siquiera era necesario entrar en la red interna de Whatsapp propiamente dicha.

Gracias al script de Alejandro Ramos pudimos practicar el harvesting de todas las cuentas de Whatsapp de España, saber que por aquel entonces sumábamos casi 10 millones de usuarios, y tener sus "status quotes" en una base de datos. Todo ello, sin esfuerzo, sin más límite que el de nuestra paciencia, sin siquiera necesitar credenciales válidas de Whatsapp.

Desde el punto de vista de arquitectura, modelo de datos y privacidad, es de lo mas "braindead" que se puede perpetrar.

Pues bien, el 9 de enero, Whatsapp realizó un nuevo cambio en el protocolo de comunicaciones, con la intención de resolver este asunto: han desaparecido de sus servidores los archivos PHP contra los que podíamos hacer un query usando simplemente wget, curl o un navegador regular.

Adiós a "https://sro.whatsapp.net/client/iphone/iq.php"

En su lugar, implementaron un protocolo de intercambio de datos de los contactos. A este protocolo le llamaremos "Contact Sync V2", tal como ha dado en llamarle el egipcio Tarek Galal, creador de la API yowsup. Dicho protocolo está colocado donde siempre debió estar: debajo de la capa de sesión. Los datos devueltos por este nuevo conjunto de comandos son muy parecidos a los que devolvía el famoso archivo iq.php, con la salvedad de que ahora es necesario estar autenticado contra el servidor de Whatsapp para poder enviar esos comandos.

Seguramente el lector pensará:

¡Bien! ¡Ya tenemos una mejora! Nuestros datos personales de Whatsapp ya no son públicamente accesibles...

...bueno, pues no. Pensemos por un momento en el modelo de datos de Whatsapp, en las reglas bajo las que han definido dicho modelo: una de las características más inseguras del protocolo Whatsapp y de las relaciones entre sus usuarios es que "quien no está explícitamente bloqueado está implícitamente permitido". Cualquier persona que añada nuestro número de teléfono a su agenda puede ver nuestra foto de perfil, nuestra "frase de estado" y controlar en todo momento si estamos conectados, o cuánto tiempo hace que lo estuvimos por última vez. Y todo esto nos está sucediendo sin que nosotros podamos hacer absolutamente nada por evitarlo, en tanto en cuanto el individuo que nos "controla" no nos envíe un mensaje que delate su presencia (ese es otro tema: esta política permite que un usuario nos envíe un mensaje sin que lo "aceptemos" previamente como contacto. Podremos bloquearlo, pero ya nos ha molestado. Para aplicaciones de spam puede ser rentable cambiar de número cada vez y seguir molestando...)

Pero hay más. No es solo un asunto de mi privacidad como individuo (que un headhunter, un responsable de RRHH, mi ex pareja o mi jefe puedan controlarme a mí, como persona elegida arbitrariamente, desde números que desconozco y de los cuales yo no puedo defenderme). También es un asunto de privacidad como elemento de una masa. Es decir, que aún es posible realizar un "harvesting" masivo de los datos de los usuarios, tal como hizo en su día Alejandro Ramos, con tan solo añadir dos elementos nuevos: unas credenciales de usuario de Whatsapp válidas (muy fáciles de obtener) y la adaptación al nuevo protocolo "Contact Sync V2" (cosa que Tarek Galal nos proporciona con su API yowsup, que no tardó en actualizar para reflejar los cambios). Nosotros en WhatsappVoyeur simplemente ofrecemos una interfaz ágil para usar la API y unas credenciales secretas para consultar cualquier número sin que nos puedan bloquear.

Uno puede pensar que, ahora que se nos piden credenciales para obtener los datos de los contactos, Whatsapp podría realizar un control del número de querys por usuario/tiempo...

...bueno, pues tampoco. He realizado stress testing y he validado hasta 700 contactos a un ritmo de 30-40 contactos por minuto. Demasiados. También he obtenido las fotos de perfil de los usuarios comprendidos en un rango de 30.000 números de teléfono. Y ya habeis visto más arriba una prueba del espectáculo, entre dantesco y divertido, que eso puede llegar a suponer...

Conclusión

El protocolo "Contact Sync V2" apenas implica una mejora real en la protección de nuestros datos de perfil en Whatsapp. Solo coloca una barrera de autenticación frente al exterior, pero no nos protege de otros usuarios autenticados en el interior; no nos protege como individuos porque las políticas en sí mismas no lo hacen (deficiencia de diseño), y tampoco nos protegen del "harvesting" masivo porque, si bien el protocolo "Contact Sync V2" proporciona una base técnica para impedirlo, no se le ha sacado partido aún.

Las políticas del tipo "lo que no está explícitamente prohibido, está implícitamente permitido" siempre deben ser implementadas con mucho cuidado, pero cuando los nombres de usuario son números de teléfono móvil que cualquiera puede obtener y sondear, y cuando están en juego nuestras fotos y otros datos que pueden ser bastante sensibles... es una muy mala idea de base.

Y digo "de base" porque es un error de diseño en sí mismo. No es una deficiencia del protocolo de comunicaciones sino una deficiencia del modelo de datos y de su lógica inherente. Whatsapp debería cambiar muy profundamente la definición del modelo de datos y los procesos de integración con nuestra agenda en el teléfono, cosa que dudo mucho que tenga en mente hacer. Ante todo soy consultor tecnológico empresarial y sé que, lamentablemente, hay cosas que no son rentables en un contexto de negocio; sé lo duro e incontrolable que es tirar adelante una startup mientras luchas con el capital riesgo. Probablemente Whatsapp seguirá invirtiendo lo mínimo indispensable en materia de seguridad, y el 99% de su esfuerzo seguirá siendo el crecimiento de la base de usuarios y la búsqueda de monetización de los mismos. Pero desde el punto de vista del usuario, de su seguridad y su privacidad, opino que Whatsapp ha cometido un error desde el principio y ha excedido los límites razonables de controversia e inseguridad, cosa por la cual (entre otras como peor diseño y peor campaña de comunicación) caerá derrotado por alternativas como Spotbros o Line...

Fuente: Security by Default

Comentarios

Entradas populares de este blog

Descienden las detecciones de malware en Android y crecen en iOS

Explotan el día cero de la VPN de Fortinet para robar credenciales

Microsoft dice que la interrupción masiva de Azure fue causada por un ataque DDoS