Fallo de seguridad en Samsung TouchWiz permite resetear terminales Android

Hoy nos enterábamos de que los terminales Android de Samsung con la interfaz TouchWiz eran potenciales víctimas de ejecución de código USSD de forma directa, sin pedir confirmación. Un código USSD, es una secuencia similar a *numero# utilizada para funciones como mostrar información del teléfono, mostrar el IMEI o restaurar la configuración de fábrica. También es utilizado por las Operadoras para servicios, como el *222# de Tigo Paraguay, por ejemplo.

Qué significa esto:

Anteriormente, para ejecutar uno de estos códigos uno debía discarlos, caracter por caracter. Pero ahora, mediante un iframe o un NFC Tag que contenga una instrucción USSD, el terminal podría discar el número directamente, ejecutándo el código sin preguntar al usuario y resultando esto en cosas como borrado completo del teléfono (restauración a configuración de fábrica) o bloqueo de la SIM, por ejemplo.

El la pasada Ekoparty, Ravi Borgaonkar demostraba esta vulnerabilidad de Samsung pero usando tags NFC:

El problema saltó a la luz, cuando Pau Oliva publicó en Twitter que era posible hacer lo mismo pero usando simples iframes HTML.

Nos alarmamos, y viendo que teníamos a mano 4 terminales a mano para probar el fallo, ingresamos a éste post. El post, tiene un iframe con la instrucción tel:*#06# que despliega el IMEI del teléfono.

El resultado:

TeléfonoVersión de AndroidInterfazResultado
Samsung Galaxy Mini2.3.6TouchWizDolphin: código ejecutado directamenteNavegador stock: código ejecutado directamente
Samsung Galaxy S24.0.4TouchWizFirefox: código ejecutado directamenteNavegador stock: código ejecutado directamente
HTC Nexus One4.1StockNavegador stock: se abre la aplicación Teléfono, esperando la confirmación para discar el númeroOpera Mobile: el iframe no se carga, en su lugar se despliega una alerta de seguridad
Samsung Galaxy Nexus4.1.1StockNavegador stock: se abre la aplicación Teléfono, esperando la confirmación para discar el número
### Este es el resultado obtenido en el Galaxy Nexus

¿Por qué ocurre esto?

Una de las cosas que me molestaban como usuario, es que en la versión de fábrica de Android la opción “Llamar a X teléfono” no realizaba la llamada directamente, sino que abría la aplicación Teléfono y luego de ahí, uno debía presionar el botón de llamada para poder establecer la comunicación. Lo que supongo, es que la gente de Samsung también notó esto y al querer facilitar el uso de sus terminales habrá agregado esta característica, de forma a que cualquier acción Llamar-a-teléfono realice la llamada sin preguntar al usuario. El problema, es que esto se aplica también a los códigos USSD y por eso se convirtió en un fallo de seguridad.

Tengo un Samsung con Android, ¿Qué hago?

Lo mejor, sería visitar el post de prueba para saber qué acción toma el sistema respecto a estos iframes.  En caso de ocurrir lo peor (que el código se ejecute directamente, y la pantalla de IMEI sea desplegada apenas se cargue la página) lo que podemos recomendar es que en caso de tener que ingresar a algún sitio no muy confiable, lo hagan desde Opera Mobile, o algún otro navegador que pase la prueba. Si la pantalla obtenida es similar a la que se ve arriba con el Galaxy Nexus, no hay de qué preocuparse, por ahora.

En qué quedamos

Samsung está analizando el problema, y debería lanzar alguna actualización de seguridad para corregirlo dentro de poco. Mientras, esperemos que no nos encontremos con muchos sitios que inserten este tipo de código, ya que no sabemos si sólo los terminales de Samsung están afectados pero sí asumimos que todos los teléfonos de todas las marcas reconocen códigos USSD.

Post para probar la acción tomada con los códigos USSD – MisterJonjon.com

Demo Dirty use of USSD Codes in Cellular Network en Ekoparty 2012 – YouTube.com

Imagen destacada: Maclife