Nueva vulnerabilidad aplicaciones híbridas basadas en Cordova

por / lunes, 08 junio 2015 / Publicado enBlog
Nuestras impresiones sobre el Global Activiti User Day
Alfresco Analytics 1.0

Recientemente se ha descubierto una vulnerabilidad que afecta al 5,6% de las aplicaciones que actualmente se encuentran disponibles en Google Play. Estas aplicaciones están basadas en el framework de desarrollo Cordova de Apache y contienen versiones menores o iguales a 4.0.1.

¿En qué consiste?

Cuando se crea un proyecto basado en Cordova, se definen una serie de preferencias que actúan en el comportamiento base de la aplicación de forma nativa. Definiendo parámetros como, el color de fondo de la aplicación o la imagen de splashscreen o el tiempo de carga del splashscreen. Con ello hacemos que la aplicación se lance con éstas preferencias.

La vulnerabilidad encontrada, llamada CVE-2015-1835, permite desde una url ejecutada en un browser de Android (tipo scheme url), añadir estas preferencias en el caso que no se hayan definido. De tal manera que podemos cambiar el color de fondo de la aplicación o cambiar el splashscreen por una imagen que posea la aplicación internamente.

Una vez la aplicación se ha lanzado desde la redirección, se inicia con dichas preferencias, pero cuando la aplicación se cierra completamente y se vuelve abrir, no se mantiene esa configuración.

¿Qué preferencias están expuestas?

Dado que la vulnerabilidad afecta al sistema operativo móvil Android, las preferencias que están disponibles son las siguientes:

FullScreen, permite cambiar el modo de la aplicación.

DisallowOverscroll, si no se quiere tener feedback cuando el usuario hace scroll al principio o al final.

BackgroundColor, crea un “background color”

Orientation,  define la orientación en la que se ejecuta la app landscape, portrait.

KeepRunning, provoca que la aplicación no se mate cuando entra en pause, puede provocar un consumo de energía desmesurado.

LoadUrlTimeoutValue,  este es critico y puede provocar que no arranque correctamente.

SplashScreen,  imagen de carga inicial.

SplashScreenDelay,  tiempo de espera hasta que se quita la imagen de splash.

InAppBrowserStorageEnabled, controla si las páginas abiertas mediante InAppBrowser, pueden acceder al mismo localStorage y WebSQL como las páginas abiertas con el navegador por defecto.

LoadingDialog, Titulo y mensaje mostrado durante la carga de la primera página.

LoadingPageDialog,  Igual que LoadingDialog, pero en la carga de todas las páginas después de la primera.

ErrorUrl, redirección para mostrar un error de aplicación

ShowTitle, se muestra el título en la parte superior de la aplicación.

LogLevel, Obtener el log ERRORWARNINFODEBUG, and VERBOSE

SetFullscreen,  se muestra la aplicación en fullscreen o no.

AndroidLaunchMode,   define el atributo “Activity android:launchMode"

DefaultVolumeStream, define que tipo de volumen se activa con el botón físico de volumen.

 

Vulnerabilidad Apache Cordova

Vulnerabilidad Apache Cordova

 

¿Cuál es el riesgo para mi aplicación Cordova?

Los perjuicios que se pueden provocar dependen de la preferencia a modificar, por ejemplo no es lo mismo modificar el comportamiento del botón de volumen en la aplicación que se estipule que una aplicación que hace uso de localización GPS cada segundo, no se pueda cerrar y provoque una descarga de la batería en pocas horas.

Por ello hay que analizar las preferencias definidas en nuestra aplicación y evaluar los daños que conllevaría. Así mismo, para poder ejecutar esta vulnerabilidad, sería necesario conocer el nombre la actividad principal en el caso de no haber usado la que Cordova escribe por defecto que es “MainActivity”.

También cabe destacar, que la actuación de esta vulnerabilidad no se mantiene en la aplicación, es decir una vez la aplicación deja de ejecutarse y se vuelve a iniciar, ya no se ejecutan las preferencias “malas”. Por lo tanto se aconseja actualizar las aplicaciones a la versión 4.0.2 o a la 3.7.2 de Apache Cordova

Es nuestra responsabilidad como desarrolladores

En cualquier desarrollo software, móvil o no, hay que estar siempre vigilante a los posibles errores de programación, propios o de terceros  y mantenerse siempre informado de las actualizaciones de seguridad de cualquier componente software que se este usando.

Si deseas comprobar si tu aplicación está expuesta a esta vulnerabilidad, no dudes en contactarnos en info@keensoft.es

 

My life is mobile, think in mobile, go everywhere with my mobile and most of the times call with my mobile.

Deja un comentario

SUBIR