Sinceramente, hay cosas que me sorprenden. Tenía entendido que el problema de memoria máxima en el WhatsApp de Android se había solucionado, pero ayer descubría que todavía sigue pendiente. Lo explico.


whatsapp pwned

Seguramente si ha llegado hasta aquí sea porque algún “amigo” graciosillo le ha enviado un mensaje como este (EN) por WhatsApp con caracteres normalmente del alfabeto chino de larga extensión (más de 2000 palabras) y previsiblemente por algún chat de grupo (por eso de hacer la gracia al mayor número de personas).

Si el receptor es cliente Android (versiones KitKat hacia abajo, según tengo entendido) (me confirman que en cualquier versión), en cuanto intente abrir ese chat la aplicación crashea (sale un error que obliga a que esta se cierre) y toca reiniciarla. No es un gran problema, ya que al momento volverá a abrirse y podremos seguir usándola como siempre, pero la notificación de ese mensaje entrante volverá a aparecer nuevamente, por lo que puede resultar molesto (siempre nos aparecerá que tenemos conversaciones sin leer). En dispositivos iOS no pasa, y en Windows Phone, al encontrarme esta semana fuera de casa, no puedo tener la certeza de que funcione de la misma manera.

Se trata por tanto de una vulnerabilidad del cliente de Android basada en el tamaño máximo de mensaje recibido, que no debe superar los 2KBs, y cuyo resultado es un DDoS de cliente (denegación de servicio). La vulnerabilidad no permite escalada de privilegios ni robo de información, simplemente es molesta, y afecta a un porcentaje del mercado que recordemos es hoy en día mayoritario. Y poniéndonos serios, puede ser una herramienta bastante útil para ofuscar información en grupos o conversaciones de WhatsApp que no queremos que sigan funcionando (la mayoría no podrá acceder al contenido, por lo que a efectos prácticos habremos evitado que esa información siga en circulación).

Y decía que hay cosas que me sorprenden puesto que después de conocer que WhatsApp está trabajando en cifrado end-to-end (EN) (lo cual me alegro) no haya sido capaz aún de meter un sencillo control a lo que el usuario envía. Si el mensaje a enviar es mayor de 2000 caracteres, directamente borras lo que sobre y pones puntos suspensivos. O no permites que el usuario siga escribiendo. Llegar a escribir 2000 caracteres en WhatsApp no es algo que ocurra todos los días. Es algo sin duda premeditado, y por la idiosincrasia del servicio, no está diseñado para tales comunicaciones. Por tanto, creo yo (llámeme loco si lo cree oportuno) que se puede restringir el tamaño máximo del mensaje a 2000 (con una cuarta parte ya sería suficiente) antes de ser enviado, en el propio cliente.

Ahora bien, mientras WhatsApp se digna a arreglarlo (como ya he dicho, aunque parece que hay un nuevo brote de ataques, no es una vulnerabilidad desconocida), sí podemos tomar algunas medidas para contrarrestarlo:

  • Que otro receptor entre en la conversación y escriba: Como seguramente el problema venga dado en un chat grupal, lo perfecto sería que otro compañero con un iPhone entre en la conversación y escriba al menos unos 20 mensajes (aunque solo contengan un carácter cada uno). Con esto, conseguimos que el mensaje malicioso se pierda en el feed, y paradójicamente, deje de causar problemas.
  • Borrar el mensaje: Hay veces que varios astros se unen y eres capaz de entrar en la conversación. Si es así, con borrar ese mensaje se soluciona.
  • Borrar los datos de la aplicación: En Ajustes > Aplicaciones > WhatsApp > Borrar datos, eliminas todos los datos desde la última copia de seguridad. Por supuesto, esto solo sirve para eliminar el mensaje si no ha pasado más de un día.
  • Borrar la conversación entera: Más drástico, pero sin duda más rápido. Aunque claro, perderás toda la información que tuvieras almacenada en la misma.

Cualquiera de estas cuatro soluciones ponen fin (hasta el próximo mensaje semejante) al problema de bloqueo de WhatsApp por mensaje. Y sí, es lamentable que tengamos que realizarlo los usuarios cuando para la empresa es tan sencillo como cambiar un par de atributos en el input de entrada de texto.


También hay la posibilidad de dejando pulsado el botón encima del canal, exportar la conversación entera al email en formato TXT. Esto es interesante sobre todo para evitar tener que perder información que quizás queramos mantener.

Pero bueno, que sepa que todo tiene solución en esta vida. Espero que le haya servido.

 

Edit unas horas más tarde: Al parecer en Lollipop también está pasando (gracias Javi), y agregado de paso la opción de exportar conversación al email (gracias Pau).