lunes, 3 de marzo de 2014

Seguridad y privacidad en WhatsApp. Ejemplo práctico nº1

En los últimos días se está hablando constantemente de WhatsApp por varios motivos. Mientras el ciudadano de a pie debate entre comprar pastas Gallo o marca blanca, Mark Zuckerberg compra WhatsApp por 16 Billones de Dólares Americanos. Se dice rápido. Pero éste no es el único motivo: a los pocos días de su compra, la compañía líder de mensajería sufre un corte en el servicio que afecta a millones de usuarios durante horas.

A pesar de esto, en la comunidad de Seguridad de las TIC se lleva ya mucho tiempo mirando con ojo escéptico a esta aplicación. La ausencia de encriptación en las transmisiones de datos de las primeras versiones hizo que muchas empresas se empezaran a plantear si su uso a nivel corporativo podría suponer un problema de seguridad. Poco a poco WhatsApp fue actualizando y blindando sus API con el objetivo de arreglar estos agujeros de seguridad. Pero el aroma y olor a intranquilidad que desprende esta aplicación se ha propagado incluso al ciudadano de a pie, dando fuerza a otras alternativas de mensajería como Line y Telegram.

Hace unas semanas, tras una tarde de tertulia con Emilio Alonso y otros compañeros del gremio, decidí adentrarme en una prueba de concepto con el objetivo de ver hasta qué punto WhatsApp había mejorado sus puntos más débiles: la seguridad y la privacidad.

  • INCISO: Febrero del 2014 -> La WhatsAPI de la que a continuación se habla ha sido retirada por infringir, supuestamente, la DCMA americana. Desconozco hasta qué punto su uso a partir de este momento puede ser cuestionable o incluso ilegal. Por otro lado y como comentario personal alegaré que WhatsApp está basado en el protocolo XMPP, de código abierto y extensible, por tanto el hecho de bloquear una aplicación basada también en el mismo protocolo libre no se sostiene por ningún lado.

El proceso consiste en instalar en un ordenador el cliente de mensajería Pidgin junto con un plugin que permite la ejecución de los comandos de la WhatsAPI e interactuar con los servidores de WhatsApp. El envío/recibo de mensajes usando una API externa no es ninguna novedad, pero el hecho de integrar muchas de las funcionalidades de WhatsApp en una interfaz de un cliente de mensajería de escritorio facilita la interacción con la herramienta y abre nuevas posibilidades. Algunas de ellas bastante alejadas de la línea de la moralidad.


Después de añadir una cuenta de usuario de WhatsApp con la ayuda de WARP para manejar el proceso de autenticación con SMS que utiliza Whatsapp la primera vez que se instala en un dispositivo, podremos ver una ventana de contactos vacía. A partir de este momento es posible añadir contactos a nuestra lista pero, he aquí la primera disyuntiva: Si la aplicación para Smartphones se alimenta de la lista de contactos de tu dispositivo, ¿de qué manera podremos seleccionar usuarios con los que interactuar en la aplicación de escritorio? Pues tan sólo necesitamos un número de teléfono. Cualquiera.


Esto puede ser un problema de privacidad, ya que a continuación podremos ver el estado de la persona, el nombre que tenga asocioado en WhatsApp e inclusive su foto de perfil. Esta violación de privacidad ya sucede actualmente en la aplicación de Smartphones, pero al portarla a una computadora, las posibilidades de usar este sistema como recopilación de información o incluso como envío masivo de mensajes de spam con fines ilícitos o propagandísticos aumenta considerablemente.

No contento con haber estado buscando números al azar y haber gastado alguna que otra broma a compañeros y amigos suplantando identidades (puede llegar a ser muy adictivo hablar con Scarlett Johansson), decidí ver cómo se gestionaba el tema de los grupos, el envío de imágenes, audio, situación…

Por ejemplo, en el caso del envío de fotos, WhatsApp codifica las imágenes mediante una función de hasheo y las almacena en sus servidores. De esta manera, cuando algún usuario comparte una imagen (o archivo multimedia), se verifica que ésta no exista previamente en sus servidores. Posteriormente se permite, o no, la subida de la foto para a continuación transmitir el enlace de descarga al destinatario.

Como se puede ver en la imagen superior, el enlace generado es una URL a los servidores multimedia de Whatsapp cuya dirección está formada por una función hash. Por tanto, he aquí la pregunta para la próxima entrada en el blog: ¿Sería posible autogenerar esta función de hash con el objetivo de encontrar fotos al azar enviadas a sus servidores?

No hay comentarios: