En cuestión de días hemos visto cómo mensajes aparentemente inofensivos dejaban en evidencia tanto al sistema operativo iOS como al programa de mensajería Skype. Además de suponer una molestia para los usuarios afectados, nos queda la duda de cómo unas simples líneas de texto pueden conseguir que se cuelguen sistemas operativos y aplicaciones con años de testeos, parches y experiencia a sus espaldas.
El mensaje que reiniciaba cualquier iPhone
A mediados de la semana pasada se armó un gran revuelo entre los usuarios de iPhone e iPad al ver que sus dispositivos se colgaban y reiniciaban tras recibir un mensaje de texto. Este mensaje incluía una secuencia de 75 bytes de caracteres Unicode en varios idiomas, que aparecían en la pantalla de bloqueo del dispositivo. Como por defecto los mensajes recibidos se ven en pantalla aunque el equipo esté bloqueado, el sistema se reiniciaba de forma continuada.
A día de hoy, Apple todavía no ha lanzado una actualización que solucione este fallo, aunque sí publicó recomendaciones para seguir utilizando la aplicación de mensajes mientras trabaja en una solución.
“En Apple, estamos al tanto de la serie específica de caracteres Unicode que está causando problemas en iMessage. Lanzaremos una actualización de software que incluya una solución. Mientras tanto, hasta que la actualización esté disponible, puedes usar los pasos que se indican a continuación para abrir la app Mensajes”, dice el comunicado de soporte.
Los pasos en cuestión son:
- Dile a Siri el comando: “leer mensajes no leídos”
- Usa Siri para responder el mensaje defectuoso. Una vez que hayas respondido, podrás volver a abrir Mensajes.
- En la app, desliza el dedo hacia la izquierda para eliminar toda la cadena. Como alternativa, puedes mantener presionado el mensaje defectuoso, tocar Más y eliminarlo de la cadena.
El mensaje que reiniciaba Skype
Varios usuarios informaban a principios de esta semana en el foro de Skype que la plataforma se detenía al recibir un mensaje especial, causando que no se pudiera utilizar la aplicación de ninguna manera y obligando a reinstalarla. Al día siguiente, el Community Manager de la compañía confirmaba que este fallo ya fue solucionado.
“Nuestros equipos de ingeniería han trabajado duro para resolver este problema, y han publicado actualizaciones para todas las plataformas de Skype afectadas. Descarguen la última versión para solucionar este problema”.
Lo que sucedía en este caso era que, tanto al enviar como al recibir un mensaje que contuviera el texto “http://:”, Skype se detenía, haciendo imposible su uso hasta el punto de que era necesario desinstalar el programa. Esto afectaba tanto a usuarios de escritorio como móviles, en Windows, Android y iOS.
Tal como señala The Hacker News, borrar el historial de mensajes no funcionaba para sortear el problema, ya que Skype vuelve a descargar los datos desde su servidor en la nube cada vez que se inicia la aplicación. Por tal motivo, se volvía a cargar el mensaje problemático y provocaba que el programa se colgase cada vez que un usuario intentaba usar la plataforma, ya fuera después de haber enviado o recibido el mensaje en cuestión.
VentureBeat probó este fallo y descubrió que al enviar estos 8 caracteres desde Skype para Windows a su versión para Mac, la primera aplicación se colgaba mientras que la segunda no se veía afectada:
Tras mandar esta prueba enviaron los caracteres desde la versión para Mac hacia la de Windows, lo cual no solo hizo que se detuviera la segunda, sino que “la destruyó”. “Ahora, cada vez que abro Skype (que está configurado para iniciar mi sesión automáticamente) se inicia y luego rápidamente se detiene”, dice el post de VentureBeat, que muestra la siguiente captura:
Usuarios con distintas plataformas y versiones de Skype aseguraron estar afectados por este bug, incluyendo Windows 7 y Windows 8.1. Pero, por fortuna, fue rápidamente solucionado y para arreglar este fallo solo hay que descargar la última versión disponible, como indicó la respuesta de Claudius por parte de Skype. En Android y iOS, es necesario ir a la tienda de aplicaciones, buscar Skype y seleccionar “Actualizar”.
Antecedentes en otras plataformas y motivos
Si bien estos han sido los casos más recientes, no son el único exponente de casos similares. Hace unos meses fue el popular servicio de mensajería WhatsApp el que se vio afectado por un mensaje compuesto de caracteres asiáticos que hacían que la aplicación se bloquease.
Pero, ¿qué produce que unas simples líneas de código causen tanto daño? La respuesta está en la interpretación que hacen las aplicaciones afectadas de los caracteres o cadenas enviadas. En el caso del fallo en iOS está claro que había ciertos problemas a la hora de interpretar esa cadena de caracteres escrita en diferentes idiomas.
Por su parte, Skype parece que sucumbió ante algún fallo en su código que no le permitía interpretar correctamente la cadena enviada. Si nos fijamos, esta cadena incluye el texto “http://:”, algo que podría hacer que la aplicación esperase algún tipo de enlace a una dirección web, pero que al no obtenerla se colgase irremediablemente.
En ambos casos parece que el causante es parte del código encargado de interpretar las cadenas de texto recibidas por otros usuarios, algo que denota una falta de depuración del código al no contemplar situaciones como las que hacen que estos sistemas fallen. Esto es, por otra parte, algo incluso comprensible, puesto que tanto Skype como iOS contienen cientos de miles de lineas de código y es perfectamente entendible que se produzcan errores de este tipo.
Por suerte, en ambos casos estos fallos no han permitido que se ejecutase código arbitrario, algo que limita su peligrosidad pero que provoca molestias a los usuarios de los sistemas y aplicaciones afectadas.
Mucho peor hubiera sido si se hubiese producido un caso como el que provocó hace un año la retirada temporal de la aplicación Tweetdeck, donde un joven austriaco consiguió explotar una vulnerabilidad XSS en la aplicación Tweetdeck. Esto permitía publicar mensajes de alerta con código potencialmente peligroso como mensajes con direcciones web.
Conclusión
Más allá de la repercusión (principalmente mediática) que estos dos casos han tenido, estos incidentes nos deben servir para recordar que debemos actualizar nuestros sistemas y aplicaciones cada vez que se publique un parche. Esto nos evitará molestias como las que hemos analizado en este post o consecuencias peores que pongan en peligro la seguridad de nuestro sistema.
Josep Albors a partir de un post de Sabrina Pagnotta en WeLiveSecurity