[LACNIC/Seguridad] Prey Anti Robos para Android no verifica la validez de los certificados SSL del servidor [STIC-2014-0731]

Programa STIC stic en fundacionsadosky.org.ar
Mie Nov 12 21:22:06 BRST 2014


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

	Fundación Dr. Manuel Sadosky - Programa STIC Advisory
		www.fundacionsadosky.org.ar

Prey Anti Robos para Android no verifica la validez de los
certificados SSL del servidor


1. *Información del reporte*

Título: Prey Anti Robos para Android no verifica la validez de los
certificados SSL del servidor
Reporte ID: STIC-2014-0731
Reporte URL: http://www.fundacionsadosky.org.ar/publicaciones-2
Fecha de publicación: 2014-11-11
Fecha de última actualización: 2014-11-11
Fabricantes contactados: Fork Ltd. (desarrollador de Prey Anti Robos)
Modo de publicación: Coordinado


2. *Información de vulnerabilidades*

Clase: Incorrecta validación de la cadena de confianza de un
certificado [CWE-296]
Impacto: Denegación de servicio, Eludir mecanismos de seguridad
Remotamente explotable: No
Localmente explotable: No
Identificador CVE: CVE-PENDING


3. *Descripción de vulnerabilidad*

    Prey es una aplicación antirobo gratuita que permite a usuarios de
teléfonos inteligentes rastrear y localizar sus dispositivos móviles
en caso que hayan sido perdidos o robados. Provee una forma de obtener
remotamente la ubicación geográfica precisa de un dispositivo,
bloquearlo, sacar fotos, reproducir sonidos de alarma y mostrar
mensajes en la pantalla. Según estadísticas del mercado de
aplicaciones Play de Google, a Noviembre del 2014 tiene entre 1 y 5
millones de instalaciones mundialmente [1].


    La comunicación entre la aplicación Prey corriendo en el
dispositivo Android y el servidor web es realizada vía HTTPS, un
mecanismo de transporte que busca garantizar confidencialidad e
integridad de los datos mediante cifrado. Sin embargo, el primero no
valida los certificados SSL presentados por el segundo al iniciar una
conexión. Como resultado, es posible subvertir el propósito de la
aplicación y evitar que funcione como mecanismo anti-robo con bloqueo
y rastreo de dispositivos. Para hacerlo, un atacante simplemente
necesita realizar un ataque de intermediación de tráfico
(Man-in-the-Middle) entre la comunicación de la aplicación corriendo
en dispositivo (presuntamente robado y bloqueado con una contraseña
del usuario) y el servidor, presentarle un certificado falso y
enviarle un pedido de 'lock command' (comando de bloqueo) con una
contraseña que el atacante elija. Luego el atacante podría desbloquear
el dispositivo manualmente con la contraseña que especificó. Otros
tipos de ataques son posibles dado que toda la comunicación entre el
dispositivo y el servidor puede ser inspeccionada y modificada por un
atacante.


4. *Paquetes vulnerables*

   . Aplicaciones Prey Anti Robos para Android versión igual o
anterior a 1.1.3.

5. *Información y soluciones del fabricante*

     El fabricante reconoció el problema y se comprometió a publicar
una actualización que lo solucione el 11 de Noviembre del 2014.

      Mientras tanto los usuarios que quieran protegerse pueden
desinstalar la aplicación Prey Anti Robos de su dispositivo Android
abriendo el panel de "Configuración|Administrador de aplicaciones",
seleccionar "Prey" y tocar "Desinstalar". Los pasos para desinstalar
pueden variar dependiendo de la versión de Android que tenga el
dispositivo.


6. *Créditos*

Las vulnerabilidades fueron descubiertas e investigadas por Joaquín
Manuel Rinaudo. La publicación de este reporte fue coordinada por
Programa de Seguridad en TIC.

7. *Descripción técnica*

    La vulnerabilidad se encuentra en la clase
'com.prey.net.HttpUtils' que instancia un HttpClient para conectarse
al servidor de Prey. El HttpClient utiliza un SSLSocketFactory a
medida llamado EasySSLSocketFactory para obtener  los sockets usados
para comunicarse al servidor. Esta clase también llama al método
'setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER)'
para aceptar como válido cualquier nombre de host presentado en el
certificado[2]. Aún más, como EasySSLSocketFactory implementa un
'X509TrustManager' con métodos verificadores vacíos [3], cualquier
certificado presentado por el servidor será considerado válido. Esto
permite a un atacante montar ataques de MITM (Hombre en el Medio) para
impersonar al servidor de Prey con certificados SSL fraguados.

    Para desbloquear un dispositivo bloqueado por un usuario, un
atacante puede simplemente falsificar un comando de bloqueo del
dispositivo especificando una nueva contraseña y así obtener control
del dispositivo. Esto podría hacerse modificando la respuesta del
servidor al pedido comandos a
'https://solid.preyproject.com/api/v2/devices/[DEVICE_ID].json' a lo
siguiente:

/-----
        [
            {
                "command": "start",
                "options": {
                    "unlock_pass": "easy"
                },
                "target": "lock"
            }
        ]

- -----/

   La aplicación intenta obtener nuevos comandos del servidor
registrándose para escuchar varios eventos de Android como cambios de
conectividad, nivel de la batería, entrar en modo avión, prendido y
apagado del dispositivo.


8. *Cronología del reporte*

. 2014-09-17:
	Se envió un pedido a la página de soporte del proyecto Prey para
obtener algún contacto de seguridad.

. 2014-09-23:
	El fabricante le pidió a Programa de Seguridad en TIC uqe envie el
reporte de la vulnerabilidad vía correo electrónico no cifrado a
security en preyproject.

. 2014-10-01:
       	Los detalles técnicos de la vulnerabilidad fueron enviados al
fabricante.

. 2014-10-25:
	Programa de Seguridad en TIC pide al fabricante noticias acerca del
problema y le comunica una fecha estimada de la publicación del
reporte para el 27 de Octubre del 2014. El fabricante pidió retrasar
la fecha dado a que se encontraba en el medio de una reestructuración
de su compañía.

. 2014-10-27:
	Programa de Seguridad en TIC aceptó retrasar la publicación pero sólo
si se proveyesen detalles acerca del estado de la resolución del
problema y un compromiso con fecha concreta para publicar una versión
arreglada de la aplicación.

. 2014-10-28:
         El fabricante informó que ya habían desarrollado un parche
pero no lo habían publicado y consultó acerca de como evitar exponer a
explotaciones de la vulnerabilidad a aquellos clientes corriendo a las
versiones viejas de la aplicación sin mecanismo de actualización
automática.

. 2014-10-29:
	Programa de Seguridad en TIC le pidió al fabricante una copia del
parche para confirmar que el problema había sido solucionado. Se le
recomendó al fabricante que informe a los usuarios acerca de la
vulnerabilidad y los riesgos involucrados así los clientes son
incentivados a actualizar la aplicación y se logra minimizar el
impacto de la vulnerabilidad.

. 2014-10-30:
          El fabricante envió una nueva versión de la aplicación
indicando que tenía el problema arreglado y notificó que la
modificación consistía en cambiar el HostNameVerifier de
'ALLOW_ALL_HOSTNAME_VERIFIER' a 'STRICT_HOSTNAME_VERIFIER'.

. 2014-11-3:
	Programa de Seguridad en TIC informó al fabricante que el parche no
solucionaba el problema dado que la cadena de certificados seguía sin
ser validada y que no se verificaba que el CA raíz fuese uno de los
confiados por Android ya que se seguía utilizando un TrustManager vacío.

. 2014-11-10:
          El fabricante informó que publicaría una actualización con
la nueva versión en Google Play el 11 de Noviembre del 2014.

. 2014-11-11:
          Se publica este boletín de seguridad

9. *Referencias*

[1] https://play.google.com/store/apps/details?id=com.prey
[2]
https://github.com/prey/prey-android-client/blob/master/src/com/prey/net/HttpUtils.java
[3]
https://github.com/prey/prey-android-client/blob/master/src/com/prey/net/EasySSLSocketFactory.java

10. *Acerca Fundación Dr. Manuel Sadosky*

La Fundación Dr. Manuel Sadosky es una institución público privada
cuyo objetivo es favorecer la articulación entre el sistema científico
? tecnológico y la estructura productiva en todo lo referido a la
temática de las Tecnologías de la Información y la Comunicación (TIC).
Creada a través del Decreto Nro. 678/09 del Poder Ejecutivo Nacional,
la Fundación es presidida por el ministro de Ciencia, Tecnología e
Innovación Productiva. Sus vicepresidentes son los presidentes de las
cámaras más importantes del sector TIC: CESSI (Cámara de Empresas de
Software y Servicios Informáticos) y CICOMRA (Cámara de Informática y
Comunicaciones de la República Argentina). Para más información
visitar: http://www.fundacionsadosky.org.ar

11. *Derechos de autor*

El contenido de este reporte tiene copyright (c) 2014 Fundación
Sadosky y se publica bajo la licencia Creative Commons Attribution
Non-Commercial Share-Alike 4.0:
http://creativecommons.org/licenses/by-nc-sa/4.0/


-----BEGIN PGP SIGNATURE-----
Version: GnuPG/MacGPG2 v2.0.17 (Darwin)
Comment: GPGTools - http://gpgtools.org

iQIcBAEBAgAGBQJUY+udAAoJEOAj8IJkRx2rHPcQAM8U0WVyYY8zUhl2fzu22Ktl
fAxZlR4SfjZfPxsItKK2oe19Kq2D5IB1RrIOH6Fn9zDOcc/EnUvTBZUN9PA9R3lj
2wB0iwp5kI7Cw0ltvq2mintzKnsJocUFR1aagbeaay5fA+HzGHHURyiy8cVKHf1j
kzVIh19qz5+FubO7KXVR2H0epXrkiWUXTPDRtJ+SoxzWGIz31H8P7hAsdkIv01+h
0QwwCreVNg+gWaU7kjtOPXyDQJH068QZsTyq3S3ey28l4orPI62PL9Nd5lns2vo+
2Mv2HaEUzOv9sWMs5WXjYxG0XTwNzg38E6ZZtJDdTqgkU07Xg7UHAGZlWN87R7Q4
8LpqLl9AKp5cv/4q7wkXSf1UAOYPcIZS5RZ4u6UxA27knntou/dsUo36ADJ7J5zf
mDaBEieCNZZLXsc/0O3vdUkOzU6kKgq61hsex4CIgCsotALCj0JC8v+CLqceeQtV
ruuFav3BH6KRHHsgFVSLMPQVOQvITDNXahurAwcObxBXm3gD538sF6Mrtdd56weX
cyQuh8+QvQ/f13lPa4GUN8XphEg/m8OgSDpC5bU+1PuxLh2qwrtGpO+WpOnRFyP7
mYxN9PdBlq7ioxYstrRMkg9grokQFvy7Mf3ylrbKp0vHyzRbXNvTrf2fMFCt1b1n
5SXduut2tINzcO4fh/e9
=2yK1
-----END PGP SIGNATURE-----



Más información sobre la lista de distribución Seguridad