9 nov 2012

Vulnerabilidad de USSD en Android neutraliza la SIM y resetea teléfonos de algunas marcas

Vulnerabilidad de USSD en Android neutraliza la SIM y resetea teléfonos de algunas marcas:
Ha
salido a la luz la noticia de un error en Android que permite
inutilizar totalmente la tarjeta SIM de un
teléfono móvil
, e incluso dependiendo de la marca, permite que el móvil sea
reseteado sólo con visitar una página web maliciosa. El ataque puede consumarse
con solo visitar una página web.

El lugar de presentación del
error fue la última Ekoparty realizada en Buenos Aires por Ravi Borgaonkar (@raviborgaonkar). El error
es la autoejecución de los comandos USSD en los dispositivos Android.

¿Qué es un USSD?

El USSD, acrónimo de 'Unstructured Supplementary Service Data',
es un servicio que permite el envío de datos a través de redes móviles GSM de
forma inmediata, muy similar al SMS. La diferencia es que no necesita de ningún
intermediario como ocurre con los SMS, que precisan de un SMSC (Short Message
Service Center) para almacenar el SMS de un terminal origen hasta que el
terminal destino está disponible.

Cuando un usuario introduce un
código USSD, la respuesta del servicio suele ser casi instantánea. Se hace uso
de de USSD, por ejemplo, para realizar una consulta de saldo o conocer el IMEI
del teléfono.

¿Cuál es el error?

El error se da por un fallo en la
programación de Android, específicamente en los 'intents', que ejecutan automáticamente los tag que contienen USSDs
sin la necesidad de que este sea validado por parte del usuario.

Ravi Borgaonkar se basa en el tag 'tel', un intent para notificar la acción
de que se va a utilizar la llamada telefónica, perfectamente válido y definido
en el W3C que da la capacidad de marcar números de teléfono, (no solamente a
los teléfonos Android, sino a todas las plataformas disponibles, incluso a las
más antiguas si disponen de un navegador web).

¿Cómo puede afectar este error al teléfono?

El error, tal y como explicó
Ravi, se puede utilizar para enviar 10
veces el código PUK erróneo
, y esto (documentado en el RFC de telefonía),
deshabilitaría inmediatamente una tarjeta SIM. Dejaría a la víctima sin teléfono hasta que el operador facilitara otra
tarjeta válida
.

¿Como se puede aprovechar la vulnerabilidad?

El error puede ser aprovechado de
forma remota simplemente accediendo a
una página web
. Se hace especialmente fácil a través de códigos QR, una URL
acortada por un acortador de direcciones o simplemente a través de la
ingeniería social. Los USSD pueden ser también introducidos a través de
tecnología NFC (Near Field Communications).

¿Por qué afecta de forma especial a Samsung?

Además del ataque anteriormente
descrito, Samsung es vulnerable a otro ataque
adicional
que permite que un dispositivo sea reseteado volviendo a sus
valores de fábricas. Esto es debido a que Samsung dispone de un USSD 'especial' no documentado oficialmente
que permite a devolver los parámetros del teléfono a los valores de fábrica. Se
han usado a veces en algunos modelos para liberar los teléfonos de esta marca.
Otras marcas podrían verse afectadas como HTC o Sony.

En concreto, el código para los
Galaxy es el *2767*3855# y la vulnerabilidad puede ser explotable de forma directa con una simple visita a una
página web que contenga el código de reseteo en la etiqueta 'tel'
, quedando de una forma similar
a esta.

<iframe
src="tel:*2767*3855%23" width="320"
height="240"></iframe>

Para saber si se es vulnerable
sin riesgos, se puede realizar la prueba con el código USSD universal para
conocer el IMEI:

<iframe
src="tel:*%2306%23"></iframe>

Para mitigar el error, Collin Mulliner ha desarrollado una pequeña aplicaciónpara Android llamada 'TelStop' que
permite que estos USSD deban ser aceptados por parte del usuario antes de ser
ejecutados.

El vídeo demostración de
Ravi Borgaonkar:

Más información:

Some Android phones can be reset to factory
default by clicking on links

TelStop de Collin Mulliner

Resetear un teléfono Samsung con
solo visitar un enlace


Jose Ignacio Palacios
jipalacios@hispasec.com