Actualmente un gran numero de aplicaciones móviles funcionan simplemente como front ends de sus correspondientes APIs web. Aunque esto no resulte peligro de por si, trae consigo una implicación muy importante respecto al proceso de validación de entrada de datos: La validación se debe realizar tanto en el cliente (la propia aplicación móvil) como en el servidor (la API web).
Investigadores de TAMU (Texas A&M University) presentaran, en S&P (IEEE Symposium on Security and Privacy), un estudio para identificar cuando aparecen estas inconsistencias de validación entre aplicación y servidor en un set de 10.000 aplicaciones populares del Google Play Store. El estudio se centra principalmente en analizar el código fuente de la aplicación Android para detectar las comunicaciones entre los dos puntos. Posteriormente, comprueban si los controles que se realizan en la aplicación también se realizan en el servidor, analizando las respuestas que devuelve la propia API.
Dado que puede resultar algo complejo imaginarse situaciones en la que este tipo de ataques pueden tener un impacto directo en la seguridad y privacidad de los usuarios de dichas aplicaciones móviles, vamos a mostraros un par de ejemplos que fueron capaces de encontrar:
- SQL injection: Estaba claro que uno de los grandes protagonistas en este caso iban a ser este tipo de ataques. Una aplicación enviaba únicamente el email del usuario como forma de autenticación y autorización. A pesar de que se realizaba un control a la hora de enviar el mail a nivel de aplicación, este control era completamente inexistente en el servidor. Por lo tanto, era posible obtener el contenido de la base de datos de todos los usuarios registrados.
- Comprando gratis: Descubrieron que existía un vulnerabilidad de este tipo en un SDK de ecommerce utilizado por muchas aplicaciones (millones de usuarios). A pesar de que la aplicación ponía «1» como el valor mínimo de compra, el servidor aceptaba «0» como opción (para devoluciones y reembolsos). Por tanto, era posible enviar al servidor las comprar con una cantidad de «0», logrando así que el coste total de dicha compra se igualara a cero.
A través de este método, fueron capaces de encontrar mas de 4.000 apps con dicho problema de lógica de validación de datos consistente. Mediante una validación manual de 1.000 aplicaciones, lograron identificar 884 que efectivamente eran vulnerables a este tipo de ataques.