OASAM-IS-002: Malicious Activity Launch

Descripción
Las Activities pueden ser invocadas en base a datos provenientes del usuario o de la recepción de Intents arbitrarios. Esto deja varias superficies de ataque: 1. Si una Activity utiliza datos del Intent sin verificar su procedencia, la integridad de los datos de la aplicación se verá afectada 2. Si una Activity devuelve datos considerados sensibles y puede ser invocada públicamente, un Intent especialmente manipulado podría invocarla, con la consiguiente fuga de la información sensible.


Riesgos
La presencia de esta vulnerabilidad permitiría engañar a un usuario, ya que este pensaría que está en una Activity legítima cuando en realidad está ejecutando acciones que serán reportadas al atacante. Adicionalmente es posible la fuga de información que utilice la Activity.


Recomendaciones
Se recomienda utilizar componentes públicos únicamente cuando sea necesario, y en dichos casos, validar concienzudamente cada uno de los parámetros recuperados del Intent o provenientes del usuario.


Referencias
1. Flaw 3.2.2 de “Analyzing Inter-Application Communication in Android”
2. https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)
3. DRD06-J. Do not act on malicious intents - https://www.securecoding.cert.org/confluence/display/java/DRD06-J.+Do+not+act+on+malicious+intents
5. DRD09-J: Restrict access to sensitive activities - https://www.securecoding.cert.org/confluence/display/java/DRD09-J%3A+Restrict+access+to+sensitive+activities
6. DRD16-J. Explicitly define the exported attribute for private components - https://www.securecoding.cert.org/confluence/display/java/DRD16-J.+Explicitly+define+the+exported+attribute+for+private+components