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.
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:
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.
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:
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.
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.
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.
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.
Leave a Reply