sábado, 10 de octubre de 2009

Varias vulnerabilidades de denegación de servicio en Android

Se han descubierto dos vulnerabilidades en Android por las que un atacante remoto podría causar un ataque de denegación de servicio a través de distintos vectores.

Android es un sistema operativo para móviles basado en el kernel de Linux. Inicialmente lo desarrolló Google pero luego ha pasado a pertenecer a la Open Handset Alliance (formada por alrededor de 50 empresas del sector). Android trabaja con dos licencias, GPLv2 para componentes como los parches del kernel y Apache 2 para las aplicaciones porque permite su comercialización de manera más simple.

Android está pensado para trabajar de manera similar a un Framework que además permite la intercomunicación entre distintas aplicaciones usando un interfaz propio para cada aplicación. El modelo usado por Android permite que los distintos programas informen al resto de que capacidades tienen y así el resto de programas pueden usarlas sin necesidad de implementarlas siguiendo, claro está, ciertas reglas de seguridad.

El primer error se produce en el tratamiento de los SMS recibidos por Push WAP. Esto podría ser aprovechado por un atacante remoto para causar una denegación de servicio a través de un mensaje cuyo contenido de wspData no termine en "0".

Cuando se recibe este mensaje mal formado se provoca una lectura fuera de límites que causa una excepción ArrayIndexOutOfBoundsException en "android.com.phone". Este error al no ser capturado provoca que el terminal se reinicie. Si el terminal tiene activado la petición de PIN, se quedará esperando a recibirlo.

El segundo error está causado por una serie de problemas descubiertos en Dalvik, la máquina virtual de Adroid. A causa de estos errores una aplicación podría provocar un error en la API y causar el reinicio de los procesos del sistema.

En la actualidad este sistema operativo se usa en algunos modelos de HTC, Motorola o Samsung entre otros, aunque el número de dispositivos con este sistema operativo es cada vez mayor.

Está solucionado en las versiones Android 1.5 CBDxx, CRCxx y COCxx donde xx son dígitos.


Víctor Antonio Torre
vtorre@hispasec.com


Más información:

oCERT Advisory:
http://www.ocert.org/advisories/ocert-2009-014.html

commitDiff del error de SMS:
http://android.git.kernel.org/?p=platform/frameworks/base.git;a=commitdiff;h=46e23fe762d2143d60589ab6d39c4b47c2c754d1

No hay comentarios:

Publicar un comentario en la entrada