REDACCION DELAZONAORIENTAL.NET
Se ha propagado como mensaje en cadena: un simple texto de 2.000 caracteres con símbolos extraños es el causante de cuelgues y borrados de mensajes en WhatsApp. Si algún usuario gracioso está en tu lista de contactos y lo has recibido, no tienes por qué preocuparte: tiene solución.
El fallo sólo afecta a teléfonos Android, con cualquiera de las últimas versiones. No a teléfonos de Apple ni Windows Phone, y la compañía aún no se ha pronunciado acerca de una actualización de software que solucione el problema.
El código del que hay que desconfiar es un conjunto de caracteres asiáticos que ocupa tan solo 2 kilobytes. Poco, a priori, para acabar desbordando la capacidad de una aplicación como WhatsApp, que para muestra, soporta mensajes de audio, vídeo y foto que exceden de sobra varios megas (1024 kilobytes).
¿Y ya es para tanto?
Exploits que reventaban aplicaciones han existido desde los tiempos de Messenger. De hecho, un mensaje cargado de emojis ya genera problemas en cualquier dispositivo Android de gama media. Entonces, ¿cuál es la diferencia con este mensaje?
Simplemente, que al abrir la conversación en la que está contenido la aplicación se cierra. Es imposible, por ejemplo, ver mensajes antiguos de esta conversación.
Esta es la solución
Si te han enviado el mensaje en cuestión, sólo tienes que borrar la conversación entera. Recuerda, en Android, mantener apretado unos tres segundos el nombre del grupo o persona y aparece la opción de eliminar.
No es la solución si tu intención es mantener una copia de las conversaciones. Y es aquí donde radica el gran problema. También puedes esperar a que WhatsApp lance un parche y prescindir de hablar con esa persona hasta entonces.
Qué dispositivos se ven afectados
Solo falla en dispositivos Android con las últimas versiones. Desde la 4.2 hasta la 5.0.
En la Cadena SER hemos empleado un iPhone 6 Plus desde el que hemos enviado el mensaje a un Motorola Moto G de segunda generación, con Android L (versión 5.0). Según los vídeos que hemos revisado los últimos días, el comportamiento es diferente según el dispositivo, pero en todo caso provoca un fallo en la aplicación. En nuestro caso, sólo provoca un bloqueo inmediato al abrir la conversación en cuestión.
Hemos realizado el caso inverso: enviar el mensaje desde Android al dispositivo Apple, que lo recibe correctamente. Pero incluso al realizar el envío, WhatsApp se queda congelado y se cierra sin previo aviso, dando lugar a que tengamos que eliminar la conversación que habíamos iniciado.
¿Falla en otras plataformas?
Tras realizar la prueba de un iPhone a otro a través de su canal de mensajería propio, iMessage, hemos comprobado que no se da tal error.
Se ve que el fallo afecta exclusivamente a WhatsApp y no a otros métodos de envío, como los SMS, en los que, tras las pruebas, tampoco ha sido posible utilizar el exploit.
Los motivos del fallo
El problema viene dado por cómo trata WhatsApp en Android el recuento de caracteres, explica Francisco Blas Izquierdo, desarrollador de software valenciano que forma parte del proyecto Gentoo Hardened y ha dado varias charlas sobre la materia en encuentros informáticos como la Campus Party. Para entenderlo, hay que saber primero que la aplicación ha de indicar al destinatario cuál es la longitud del mensaje. Si esto no se corresponde con la realidad, se provocará un fallo, del que se aprovecha esta vulnerabilidad.
“WhatsApp dice al sistema que ha recibido un mensaje que ocupa 2.000 caracteres, pero realmente son más de 2.000, porque los símbolos del alfabeto chino ocupan como si fueran dos en vez de uno”, explica. La aplicación se desborda —literalmente— porque ha reservado menos memoria (búfer) de la que necesita para almacenar dicho mensaje: “Si envías algo que se sale de los límites del búfer que tiene reservado, ocurre lo que llamamos una violacion de segmento y el sistema operativo cierra la aplicación”, explica.
El fallo se da sólo en Android, no en el resto de plataformas. Izquierdo lo atribuye a que los tres sistemas operativos mayoritarios en móvil funcionan con lenguajes diferentes. El de Android es Java, mientras que Windows Phone y iOS tienen sus propios lenguajes.