Vulnerabilidad de tres años de antigüedad pone en riesgo aplicaciones móviles de alto perfil

Un total de 6.1 millones de dispositivos – teléfonos inteligentes, routers, smart TVs – están actualmente en riesgo de sufrir ataques de ejecución remota de código debido a vulnerabilidades que se solucionaron desde 2012.

Las vulnerabilidades están presentes en los Dispositivos Portable SDK for UPnP™, también llamados libupnp. Esta biblioteca en particular se utiliza para implementar la reproducción de medios (DLNA) o NAT transversal (UPnP IGD). Las aplicaciones de un teléfono inteligente pueden utilizar estas funciones para reproducir archivos de medios o conectarse a otros dispositivos dentro de la red doméstica del usuario.

Estas vulnerabilidades fueron corregidas en diciembre de 2012; sin embargo, muchas aplicaciones aún utilizan la versión vulnerable más antigua del SDK. Descubrimos que 547 aplicaciones utilizaban versiones antiguas de libupnp, 326 de las cuales estaban disponibles en la tienda Google Play, incluyendo aplicaciones de alto perfil como Netflix y Tencent QQMusic. Estas son aplicaciones muy populares que ponen en riesgo a millones de usuarios; además de los dispositivos móviles, routers y Smart TVs que también están en riesgo.

Figura 1. Televisor inteligente vulnerable

Cómo funciona la vulnerabilidad

La vulnerabilidad radica en la manera en que la biblioteca libupnp maneja los paquetes SSDP (Simple Service Discovery Protocol). Este protocolo es parte del estándar Universal Plug N’ Play (UPnP). El desbordamiento del stack ocurre durante este proceso, y requiere que se abra el puerto UDP 1900:

Figura 2. Análisis de los puertos del sistema afectado que muestra un puerto abierto

Un paquete especialmente creado puede utilizarse para provocar el desbordamiento de los buffers. En el siguiente código, el buffer TempBuf puede desbordarse y provocar una caída.

Figura 3. Código que muestra que el buffer puede desbordarse

Con un poco más de investigación, un exploit podría utilizarse no sólo para provocar una caída, sino también para ejecutar código arbitrario en un dispositivo afectado. La capacidad de ejecutar código arbitrario le daría al atacante la capacidad de tomar el control del dispositivo, como en una computadora personal. Hemos visto exploits que atacan a dispositivos que no utilizan protecciones de mitigación como stack canaries, DEP y ASLR. Para los sistemas que están bien protegidos, no tenemos conocimiento de exploits que hoy sean capaces de ejecutar código remotamente.

Hemos confirmado que en por lo menos 20 aplicaciones puede activarse la biblioteca libupnp vulnerable; éstas son:

Tabla 1. Algunas de las aplicaciones afectadas
Tabla 1. Algunas de las aplicaciones afectadas

Nos concentraremos en dos aplicaciones de la lista anterior que tienen un perfil particularmente alto. Una es la aplicación llamada QQMusic, que tiene 100 millones de usuarios en China y que se ha descargado 1-5 millones de veces de la tienda Google Play. Cuando se abre, activa libupnp para la reproducción de DLNA. Sin embargo, utiliza la versión 1.6.17 del SDK, una versión que data de abril de 2012.

Figura 4. SDK vulnerable integrado
Figura 5. Stack con datos controlados

La aplicación de Netflix es muy popular en Android, y también se utilizaba lo que creíamos era una vieja versión de libupnp – 1.6.13. El SDK se utiliza cuando la aplicación para Android se utiliza para controlar Netflix en otro dispositivo, como una consola PlayStation 3.

Figura 6. SDK embebido en Netflix

Sin embargo, al aclararlo con Netflix, supimos que Netflix utiliza su propia versión de libupnp debido a una API que ya no es parte de las versiones más recientes de libupnp. Sin embargo, contiene los fixes de las versiones más nuevas de libupnp también, así que creemos que no son afectadas por los ataques potenciales de la ejecución remota de código dirigidos a esta vulnerabilidad.

Los SDKs también dependen de otros SDKs para ejecutarse. El Linphone SDK ofrece servicios de voz sobre IP (VoIP) para varias aplicaciones. El libupnp SDK es una de varias opciones utilizadas por el Linphone SDK para brindar NAT traversal vía UPnP; si se elige esta opción se activará el servicio vulnerable.

Figura 7. Linphone se suspende debido al uso de libupnp

Declaración

Informamos a Linphone y Tencent (desarrolladores de la aplicación QQMusic) de los problemas de sus aplicaciones. Ambos se comprometieron a liberar los parches. Seguimos investigando otros dispositivos o aplicaciones vulnerables, es importante que todos los proveedores afectados  liberen los parches.

  • Noviembre 14 – Se informó del problema a Linphone y Tencent.
  • Noviembre 16 – Tencent reconoció la vulnerabilidad.
  • Noviembre 18 – Linphone reconoció la vulnerabilidad.
  • Noviembre 23 – Tencent liberó una actualización para su aplicación Android (versión 5.7.1.5).
  • Noviembre 25 – Linphone libero una solución para este problema.

Posted

in

by

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.