Falla de MX Player permite hackear teléfonos de forma remota

Especialistas en seguridad móvil revelaron el hallazgo de una vulnerabilidad en MX Player, una app de reproductor de medios disponible en Google Play Store que cuenta con más de 500 millones de descargas. Acorde al reporte, la explotación de la falla permite ejecutar código remoto en el sistema objetivo, lo que llevaría a un compromiso total del dispositivo.

A diferencia de otras apps de reproductor de medios, la vulnerabilidad de MX Player no se explota enviando archivos maliciosos o malformados, sino que el ataque requiere de abusar de la función para compartir videos. Los investigadores lograron explotar la falla con éxito y notificaron a los desarrolladores, quienes corrigieron esta condición con el lanzamiento de la versión 1.24.5.

Los usuarios de MX Player pueden transferir archivos de video entre dos dispositivos, estableciendo un equipo receptor y uno emisor, que se autentica mediante una contraseña compartida, iniciando la conexión. Los archivos recibidos de este modo se almacenan en un directorio creado de forma automática (/sdcard/MxShare).

Cuando el usuario del dispositivo receptor habilita el “Modo Hotspot”, la contraseña se codifica en base64 y se presenta públicamente como un dispositivo Bluetooth reconocible.

Si un actor de amenazas localiza el Bluetooth del usuario receptor, la contraseña podría verse comprometida, lo que desencadenaría diversos escenarios de riesgo.

El protocolo presenta varios comandos a lo largo del proceso de transferencia. Uno de estos comandos le dice a la aplicación el nombre del archivo para guardar el archivo entrante.

Aplicando ingeniería inversa del código de la aplicación, puede encontrarse la parte donde esta aplicación procesa el protocolo de uso compartido. Aquí vemos que el comando responsable de procesar el nombre del archivo es “FILE_LIST”, cuando se recibe este mensaje a través del protocolo de transferencia, se toman parámetros que le indican a la aplicación cómo guardar el archivo.  

El mensaje esperado se mostraría como:

‘mx\x00\x01\x00\x02\x00\x00\x00\xb5{“hash”:”FA730A013D17D705CAF504B5CA560501″,”id”:0,”name”:”cool_video”,”suffix”:”mp4″,”size”:5976,”type”:0}

El indicador “\x01” después del encabezado “mx” es el comando FILE_LIST, mientras que el siguiente texto JSON contiene un campo llamado “name”. Si el mensaje se recibe durante la transferencia de un archivo en MX Player, se tomará el nombre y lo concatenará en una ruta codificada de “/sdcard/MXShare/”.

Aquí puede apreciarse el problema, que consiste en la capacidad de hacer un recorrido de ruta si el nombre del archivo pasad es “../../traversedFile”.

Por lo tanto, al enviar un mensaje como el siguiente:

s.sendall(b’mx\x00\x01\x00\x02\x00\x00\x00\xb5{“hash”:”FA730A013D17D705CAF504B5CA560501″,”id”:0,”name”:”../cool_video”,”suffix”:”mp4″,”size”:5976,”type”:0}

El video podría ser almacenado fuera de la ubicación predeterminada y directamente en el directorio root de la tarjeta de memoria del dispositivo.

Cuando el usuario habilita el modo receptor en una transferencia de MX Player, un actor de amenazas puede conectarse al teléfono de forma remota con el fin de interactuar con el protocolo de transferencia MX para implantar un archivo .odex ejecutable en /data/data/com.mxtech.videoplayer.ad/files/oat/<arch>/audience_network.odex (así como .vdex). El protocolo MX Transfer puede admitir el envío de varios archivos en una sesión de transferencia, por lo que al crear un mensaje FILE_LIST como se ve a continuación, se eliminarán correctamente ambos archivos en las rutas para su ejecución la próxima vez que se ejecute la aplicación.

Como se ha mencionado anteriormente, la explotación exitosa de la vulnerabilidad permitiría la ejecución remota de código. Se recomienda encarecidamente a los usuarios de MX Player actualizar a la más reciente versión disponible de la app.