El top 10 de OWASP sobre vulnerabilidades en aplicaciones móviles fue el tema tratado por Tobias Zander en la conferencia Take Off 2014. Este listado ya ha sido mencionado por ESET Latinoamérica en posts anteriores, pero para vulnerabilidades para plataformas distintas como el Top Ten vulnerabilidades en aplicaciones web.
De acuerdo al ranking, el top 10 de este año es el siguiente:
- M1 Weak Server Side Controls: corresponde a las inyecciones de código. Los atacantes buscan vulnerabilidades en los servidores para poder explotarlas inyectando códigos maliciosos.
- M2 Insecure Data Storage: se trata mayormente de dispositivos móviles perdidos y/o robados, aunque también está la posibilidad de acceder a dichos dispositivos sin la necesidad de tenerlos físicamente a través de exploits in-the wild y/o distintos códigos maliciosos.
- M3 Insufficient Transport Layer Protection: cuando se desarrolla una aplicación normalmente los datos son intercambiados entre un cliente y un servidor. Si la codificación de dicha aplicación es débil, existen diversas técnicas para visualizar datos sensibles mientras viajan entre el cliente y el servidor.
- M4 Unintended Data Leakage: las aplicaciones móviles tienen que interactuar con sistemas operativos, infraestructuras digitales, hardwares nuevos, etc. que no son propiedad de los desarrolladores, por lo que no pueden controlar cambios y/o fallas que estén por fuera de sus aplicaciones. En este sentido, es posible que se pierdan datos si no se realizan evaluaciones para entender cómo las aplicaciones interactúan con todos los elementos de los dispositivos.
- M5 Poor Authorization and Authentication: existen patrones de autenticación considerados inseguros y que deben ser evitados. Algunos ejemplos son: “Recuérdame” (cuando existe la opción de que la aplicación guarde la contraseña de forma automática), la falta de tokens de seguridad, etc.
- M6 Broken Cryptography: en algunas ocasiones, los métodos de encriptación de datos se vuelve una práctica casi obsoleta. Crear y utilizar su propio algoritmo de encriptación y utilizar algoritmos desfasados son ejemplos de malas prácticas.
- M7 Client Side Injection: siempre y cuando exista la posibilidad de que usuarios externos, internos y la aplicación misma puedan enviar datos no confiables al sistema, un atacante podría inyectar exploits sencillos a las aplicaciones móviles, lo que causa un potencial riesgo de robo de información.
- M8 Security Decisions Via Untrusted Inputs: para entender mejor este caso, tenemos que entender el concepto de IPC (Comunicación entre procesos en inglés). Los procesos entre aplicaciones y sistemas operativos comparten espacios de memoria para permitir la comunicación y sincronización entre los mismos. Para minimizar los riesgos de ataque, la aplicación móvil debería permitir solamente comunicación con otras aplicaciones confiables, las acciones sensibles deberían requerir la interacción del usuario, la información sensible no debería ser enviada a través de IPC, etc.
- M9 Improper Session Handling: el manejo incorrecto de la información es muy similar a la autenticación débil (M5). Es tan importante manejar bien la sesión una vez abierta como establecer la misma sesión. Si no se aplican cuidados sencillos pero importantes como validar la sesión a nivel servidor y no solamente a nivel cliente, establecer un tiempo de expiración de sesión o la creación de tokens seguros puede que terceros no autorizados accedan a información de otros usuarios.
- M10 Lack of Binary Protections: la falta de protección a nivel binario facilita el ataque a través de ingeniería reversa. Si un programador no es creador del código de su programa a nivel binario y no lo tiene protegido, un atacante puede fácilmente buscar fallas en el código, copiarlo, hacer cambios menores y revender una aplicación móvil nueva como si fuese suya.
La gran mayoría de las vulnerabilidades pueden ser evitadas si se llevan a cabo las consideraciones mencionadas en cada uno de los puestos del ranking. Sin embargo, muchas veces estos cuidados son ignorados por razones ajenas a los usuarios (costos, necesidad de lanzar la aplicación antes que la competencia, etc.), pero estas deficiencias pueden ser contrarrestadas si nos informamos y estamos atentos a reportes como el Top 10 de OWASP.
Las vulnerabilidades en los sistemas siguen siendo una de las mayores preocupaciones de seguridad más allá de todo el trabajo que se hace para evitarlas. Desde ESET Latinoamérica, teniendo en cuenta esta problemática, contamos con ESET Security Services donde ofrecemos servicios de auditoría de seguridad para aquellas organizaciones que deseen evaluar el estado de su seguridad.