22 enero 2014

Análisis de AutomateIT (3 de 3)

En los posts anteriores (parte 1 y parte 2) hemos estudiado y replicado en una prueba de concepto el comportamiento de los servicios Web esperados por la aplicación durante el proceso de desbloqueo de las características que no se incluyen por defecto, pero continuando con el análisis veremos que este no es el único problema que presenta.

Descarga de reglas

La aplicación dispone de un mercado de reglas donde los usuarios pueden publicar sus creaciones y otros usuarios pueden descargarlas a un coste de 5 de sus puntos:



Si capturamos la petición de la búsqueda de reglas y alteramos el parámetro de la petición RowCount para que nos devuelva un único resultado veremos lo siguiente:



Entre los parámetros recibidos en la estructura JSON podemos destacar el campo GlobalRuleId, que es el identificador de la regla en el sistema; y RuleConfig, que contiene la configuración de la regla.

Si desde la aplicación instalamos esta regla capturaremos la siguiente petición:



A la que el servidor nos devolverá la siguiente respuesta:



Si comparamos el contenido de la respuesta al instalar la regla con el resultado de la búsqueda veremos como no existe ninguna diferencia:



Visto este comportamiento se concluye:
  1. En la misma respuesta a una búsqueda de reglas se incluye la configuración de la regla.
  2. Conocida la estructura de petición y respuesta se podría simular la inclusión de la regla programando el servicio Web análogo al demostrado en el desbloqueo de características.

Fugas de información

Otro comportamiento curioso es realizar una consulta introduciendo como criterio de búsqueda la cadena "@gmail.com". Obtendremos como resultado las reglas publicadas por usuarios cuyo nombre de usuario contiene dicha cadena:


Y como ya vimos en la primera parte del análisis, existe un servicio Web que devuelve información del usuario en base a la dirección de correo electrónico:


De este modo se podría obtener información del usuario en el sistema, en este caso su configuración nos indicaría:
  • Ha configurado el sexo como hombre (Gender 0)
  • Su fecha de nacimiento es el 7/8/1962
  • Reside en España (CountryCode ES)
  • Ha comprado la la versión completa de la aplicación en Google Play (IsPro 1).
Por último, si nos dirigimos al apartado de configuración del perfil del usuario, realizamos algunos cambios y los guardamos, capturaremos el siguiente intercambio de información con el servidor:



Como vemos en los parámetros incluidos en la petición, no se observa ningún campo que apunte a la sesión del usuario, de modo que se puede deducir que si se reenvía la misma petición, modificando el UserEmail (en las cabeceras HTTP y en el cuerpo de la petición) con el de alguno de los localizados en la búsqueda por email... ¿se podrían alterar los datos de dicho usuario?

Conclusiones finales

A la vista de los resultados del análisis y de forma resumida, podemos concluir que se han encontrado las siguientes vulnerabilidades:

- Configuración de seguridad incorrecta. Hay que evitar el uso de funciones de hashing sobre cadenas de texto predecibles, en este caso permitirán a un usuario mal intencionado superar las barreras establecidas en la aplicación para el desbloqueo de nuevas características.

- Referencia directa insegura a objetos. En toda solicitud que suponga un cambio en el sistema se tienen que incluir parámetros que permitan autorizar la operación por usuario o sesión.

- Exposición de datos sensibles. Al no impedir a los usuarios que configuren sus alias con su cuenta de correo, esta información puede filtrarse a través de búsquedas en el sistema.


Artículo cortesía de Miguel Ángel Garcia.

5 comments :

Madrikeka dijo...

Muy buena toda la cadena de post, ha sido muy interesante leer un análisis tan exhaustivo.


Un saludo.

SecurityAdvisor dijo...

¿Te has contactado con el desarrollador para comunicarle de las vulnerabilidades encontradas?

Miguel Ángel García dijo...

Eso es, es el primer paso, pero no obtuve respuesta.


Hace no mucho publicaron una actualización de la APP donde pensé que tal vez incluían corrección a estos (y otros) detalles, sin embargo..., los problemas siguen ahí.

Miguel Ángel García dijo...

Muchas gracias!, me alegro de que hayan resultado interesantes.


Un saludo

muriel dijo...

"Sencillamente" genial!!! Gracias por compartirlo! Qué bien mostrado todo.