OASAM-CONF-005: Insufficient webview hardening

Descripción
Webview es una clase de Android que permite integrar la vista web en las Activities de Android. Sin embargo, a la hora de implementar webview en aplicaciones Android, hay que tener en cuenta que una configuración deficiente de esta extensión puede exponer al usuario de la aplicación a multitud de riesgos.


Riesgos
Un bastionado deficiente incurre en riesgos al usuario, que podría ser víctimas de ataques a través de la web.


Recomendaciones
Para bastionar webview, hay una serie de prácticas que deben tenerse en cuenta:


1. Deshabilitar el soporte para plugins del navegador, por ejemplo con la siguiente sentencia:
webview.getSettings().setPluginsEnabled(false);

2. Desactivar el acceso a ficheros locales, por ejemplo con la siguiente sentencia:
webview.getSettings().setAllowFileAccess(false);

3. Prevenir la carga de contenido de terceros sitios, controlando que el webview solo pueda acceder únicamente a los sitios web que la aplicación necesite, utilizando, a ser posible, listas blancas a tal efecto.

4. Deshabilitar JavaScript, por ejemplo con la siguiente sentencia:
webview.getWebSettings().setJavaScriptEnabled(false);

5. Deshabilitar la carga de contenido desde un content provider instalado en el sistema, por ejemplo con la siguiente sentencia:
webview.getWebSettings().setsetAllowContentAccess(false);

6. Deshabilitar la carga de ficheros desde URLs externas a través de JavaScript, por ejemplo con la siguiente sentencia:
webview.getWebSettings().setAllowFileAccessFromFileURLs(false);

7. Deshabilitar la carga de contenido desde URLs externas a través de JavaScript, por ejemplo con la siguiente sentencia:
webview.getWebSettings().setAllowUniversalAccessFromFileURLs(false);

 

Referencias
1. Flaw 28 de “42+ Best parctices in secure mobile development for iOS and Android”
2. http://developer.android.com/reference/android/webkit/WebView.html
3. http://developer.android.com/guide/webapps/webview.html
4. http://labs.mwrinfosecurity.com/blog/2012/04/23/adventures-with-android-webviews/
5. DRD02-J. Do not allow WebView to access sensitive local resource through file scheme - https://www.securecoding.cert.org/confluence/display/java/DRD02-J.+Do+not+allow+WebView+to+access+sensitive+local+resource+through+file+scheme
6. DRD13-J. Do not allow JavaScript in Web Apps - https://www.securecoding.cert.org/confluence/display/java/DRD13-J.+Do+not+allow+JavaScript+in+Web+Apps