OASAM-DV-004: Path Manipulation

Descripción
Si la generación de ficheros depende de entrada proporcionada por el usuario, es necesario filtrar dichos datos, ya que de otro modo un usuario malicioso podría acceder a información arbitraria utilizando los permisos del aplicativo vulnerable. A continuación podemos ver un ejemplo de creación de fichero peligrosa:
file = openFileOutput(variable_sin_sanear, Context.MODE_WORLD_READABLE);
En el caso de que la variable “variable_sin_sanear” proviniera del usuario sin aplicar un filtrado sobre la misma, podría controlarse el acceso a los ficheros por parte del aplicactivo, llegando un usuario malintencionado a poder sobrescribir ficheros del aplicativo.


Riesgos
Esta vulnerabilidad pone en riesgo la integridad y disponibilidad de los ficheros que maneje la aplicación.


Recomendaciones
Se recomienda no utilizar datos provenientes del usuario para construir el nombre de los ficheros. En caso de ser necesario, se recomienda aplicar filtrado sobre los datos recibidos, preferentemente en base al uso de listas blancas.


Referencias
1. http://projects.webappsec.org/w/page/13246952/Path%20Traversal
2. OWASP Top Ten Mobile Risk número 4: Client Side Injection.
3. http://developer.android.com/reference/android/content/Context.html#openFileOutput(java.lang.String, int)
4. DRD08-J. Always canonicalize a URL received by a content provider - https://www.securecoding.cert.org/confluence/display/java/DRD08-J.+Always+canonicalize+a+URL+received+by+a+content+provider