OASAM-DV-007: Intent Injection

Descripción
Si la entrada de usuario acaba dinámicamente cargada en los datos de un Intent, es posible que un usuario malicioso manipule dichos datos para ejecutar código a través del mismo. En especial, se debe comprobar la existencia de datos dinámicos al incluir dichos datos en un Intent, especialmente mediante siguientes métodos de la clase Intent: addCategory(), setAction(), setClass(), setClassName(), setComponent(), setData() y setDataAndType().


Riesgos
Esta vulnerabilidad pone en riesgo la ejecución normal de la aplicación, ya que si un usuario tiene capacidad para alterar los datos que albergan los Intents, podría alterar el funcionamiento de la aplicación, así como la interacción de la misma con otras a través del envío de Intents.


Recomendaciones
Se recomienda realizar comprobaciones de los valores provenientes del usuario, especialmente de los que vayan a parar a datos dentro de los Intents que instancie el aplicativo. Para ello, se recomienda inspeccionar los datos de usuario que terminen como parámetros en alguna de estas funciones de la clase Intent: addCategory(), setAction(), setClass(), setClassName(), setComponent(), setData() y setDataAndType().


Referencias
1. Flaw 5.2.5 de “A Study of Android Application Security”
2. OWASP Top Ten Mobile Risk número 4: Client Side Injection