la Aplicación celular "BA Cómo Llego" envía tu ubicación y lo que tipeas en texto plano por la red

Update 2019-04-04: La obtención de direcciones de manera no segura se reportó en el 2014 por investigadores del programa STIC de la Fundación Sadosky. Fuente: https://github.com/programa-stic/security-advisories/blob/master/BAComoLLego/README.md

Update 2019-04-10: La versión de Android de la aplicación "BA Como Llego" se actualizó el 5 de abril de 2019. En la esta actualización se resolvieron los problemas principales que se abordaron en nuestro blog, sin embargo, todavía se filtra en algunos casos información sobre el destino que el usuario busca en la aplicación. Sin embargo, no todas las comunicaciones de la aplicación están cifradas. Información básica sobre el teléfono, modelo, sistema operativo, idioma y, en algunos casos, qué tema se busca (gastronomía, salud, etc.). La versión de Apple iOS de "BA Como Llego" no se ha actualizado todavía. No hemos recibido ninguna respuesta de los desarrolladores a nuestro correo electrónico en el que detallamos los problemas informados aquí.

RESUMEN

En esta publicación informamos sobre problemas importantes encontrados en la aplicación de transporte público “BA Cómo Llego” desarrollada por el Gobierno de la Ciudad Autónoma de Buenos Aires. En resumen, los problemas encontrados son:

  • La aplicación envía la ubicación exacta de los usuarios en texto sin cifrar a través de la red. Cualquier persona con acceso al tráfico puede saber dónde se encuentra el usuario.

  • Todas las búsquedas realizadas por el usuario en la aplicación se envían en texto plano sin cifrar. Cualquier persona con acceso al tráfico puede saber lo que el usuario escribe en tiempo real.

  • Cada letra escrita genera una nueva solicitud en la red, enviando no solo lo que se escribe sino también cómo se lo escribe. Cualquier persona con acceso al tráfico puede analizar quién eres.

Estos problemas afectan a la versión 5.6.0 de la aplicación para iOS, y a la aplicación actual de Android.

ACERCA DE LA APLICACIÓN

“BA Cómo Llego” es una aplicación desarrollada por el Gobierno de la Ciudad Autónoma de Buenos Aires que cuenta con más de 1.000.000 instalaciones reportadas hasta el momento. Esta aplicación ayuda a las personas a moverse por la ciudad de Buenos Aires mediante la búsqueda de transporte público. La aplicación proporciona direcciones y opciones de transporte que incluyen autobús, metro, tren, automóvil, bicicleta o pie.

Aplicación "BA Cómo Llego" como se anuncia en Google Play Store. Fuente: Google Play Store. Fecha: 2019-04-02.

Aplicación "BA Cómo Llego" como se anuncia en Google Play Store. Fuente: Google Play Store. Fecha: 2019-04-02.

La aplicación en Android solicita los siguientes permisos según Google Play Store:

  • Ubicación (por ubicación de redes WiFi y ubicación precisa mediante tecnología GPS)

  • Fotos/Medios/Archivos

  • Almacenamiento

  • Información sobre Wi-Fi

  • Otros permisos:

    • Recibir datos de internet

    • Ver las conexiones de red

    • Acceso completo a la red

    • Prevenir que el dispositivo entre en modo

    • Prevenir que el dispositivo entre en modo sleep

    • Leer la configuración del servicio de Google

Los permisos de ubicación también se solicitan explícitamente al instalar la aplicación tanto en Android como en iOS.

 

INFORMAcIóN filtrada por “BA Cómo LLEGO”

Después de instalar con éxito la aplicación, esta ofrece dos campos de búsqueda: "Desde" y "Hasta", donde el usuario debe escribir origen y destino para encontrar posibles rutas. Cuando el usuario comienza a escribir, la aplicación genera una solicitud HTTP que envía la búsqueda parcial a los servidores. Es importante tener en cuenta que debe escribirse un mínimo de 3 caracteres para que se realice la solicitud HTTP. A medida que el usuario continúa escribiendo, se realizan más solicitudes, casi letra por letra. Todos los datos se transfieren en texto plano a través de la red. La primera solicitud se puede observar en detalle en la Figura 1. La serie de solicitudes completas realizadas por el usuario mientras escribe puede verse en la Figura 2.

Figura 1 - Toda la información se envía en texto plano. A medida que el usuario escribe en la aplicación, el texto parcial escrito se envía al servidor para recuperar posibles ubicaciones coincidentes. Esta figura muestra el texto parcial "Thi" que se está enviando. También muestra que la solicitud HTTP completa no está encriptada y, por lo tanto, cualquier persona con acceso al tráfico puede ver lo que escribe.

Figura 1 - Toda la información se envía en texto plano. A medida que el usuario escribe en la aplicación, el texto parcial escrito se envía al servidor para recuperar posibles ubicaciones coincidentes. Esta figura muestra el texto parcial "Thi" que se está enviando. También muestra que la solicitud HTTP completa no está encriptada y, por lo tanto, cualquier persona con acceso al tráfico puede ver lo que escribe.

La Figura 1 muestra ademas cómo los desarrolladores usan un encabezado HTTP especial para informar que aplicación específica generó la solicitud. En este caso es “ar.gob.buenosaires.comollego”. En la respuesta es posible observar los resultados de la búsqueda parcial en formato JSON. Este campo se completará con los resultados cuando la dirección escrita coincida con algo en la base de datos.

Figura 2 - A medida que el usuario de "BA Cómo Llego" escribe, la información se envía en texto sin cifrar a través de la red y letra por letra. Esto filtra no solo lo que el usuario busca, sino que abre la posibilidad de utilizar las técnicas dinámicas de pulsación de teclas para saber quién es la persona.

Figura 2 - A medida que el usuario de "BA Cómo Llego" escribe, la información se envía en texto sin cifrar a través de la red y letra por letra. Esto filtra no solo lo que el usuario busca, sino que abre la posibilidad de utilizar las técnicas dinámicas de pulsación de teclas para saber quién es la persona.

Como se muestra en la Figura 2, cada solicitud envía el texto escrito por el usuario en tiempo real. Más importante aún, cada letra escrita se envía en una nueva solicitud que permite analizar el comportamiento del usuario y su perfil. El análisis de los patrones de escritura se conoce como dinámica de pulsación de tecla, o keystroke dynamics, y es posible utilizar esta técnica para determinar quién es el usuario. Debido a que el contenido no está encriptado, esta información está disponible para cualquier persona con acceso a este tráfico.

También parece haber un error en la aplicación, ya que está generando solicitudes para "buscar?" y "/ buscar /?", causando mucha más filtración de datos. La figura 3 ilustra este problema. Este error también implica que la aplicación está utilizando más del doble del ancho de banda de datos de su teléfono en comparación con lo que podría usar si este problema no estuviera.

Figura 3: Un error en la aplicación hace que genere dos solicitudes con el mismo texto. Esto significa que la aplicación utiliza más del doble del ancho de banda de datos que debería de tu teléfono.

Figura 3: Un error en la aplicación hace que genere dos solicitudes con el mismo texto. Esto significa que la aplicación utiliza más del doble del ancho de banda de datos que debería de tu teléfono.

Envio DE tu UBICACIÓN desde LA APLICACIÓN PARA ANDROID

Se encontraron dos tipos de envío de la ubicación en la aplicación “BA Cómo Llego”. La primera es sobre las ubicaciones en las que el usuario está interesado y busca usando la aplicación. Estas ubicaciones se obtienen al saber qué se escribe en el destino y el origen de los campos de búsqueda. La segunda es mucho más importante y es la aplicación la que envía la ubicación actual exacta del usuario al enviar las coordenadas del GPS en texto plano en la red. La ubicación exacta se envía incluso cuando el texto escrito en los campos "Para:" y "De:" no es su ubicación actual. La figura 4 muestra este problema. Estas solicitudes se activaron cuando el usuario consultó el mapa interactivo de la aplicación.

Figura 4: La aplicación envía la ubicación GPS exacta del usuario mediante solicitudes no cifradas. Incluso cuando el usuario no buscó Desde o Hasta esta ubicación.

Figura 4: La aplicación envía la ubicación GPS exacta del usuario mediante solicitudes no cifradas. Incluso cuando el usuario no buscó Desde o Hasta esta ubicación.

Figure 5 - Response to the Google APIs location request. It shows how Google actually banned the requests.

Figure 5 - Response to the Google APIs location request. It shows how Google actually banned the requests.

En la Figura 4 hay varios aspectos a los que hay que prestar atención:

  1. La aplicación utiliza la API de Google Maps para recuperar datos según la ubicación actual.

  2. El protocolo usado es HTTP 1.0.

  3. Las API de Google generalmente usan HTTPS de forma predeterminada, pero estas solicitudes no usan cifrado.

Si observamos la respuesta de una de estas solicitudes en la Figura 5, podemos ver cómo Google las ha bloqueado y, de hecho, está prohibiendo que la aplicación realice más solicitudes. Esto significa que los propietarios de la aplicación no la están probando y no son conscientes de que Google los está bloqueando. Además, ya no es necesario enviar la ubicación del GPS.

Nota: el envío de la ubicación GPS solo se ha observado en la versión de Android de la aplicación “BA Cómo Llego”. Este envío no ocurre en la versión de iOS probada en este momento.


CONCLUSIÓn

Si usted es un individuo en riesgo debido al tipo de trabajo que realiza o a las personas a las que ayuda, es importante comprender que cualquier dato pequeño que se envíe puede ponerlo en riesgo. Hoy en día llevamos teléfonos móviles dondequiera que vamos, y es importante entender que estos pueden ponernos en riesgo. Recomendamos desinstalar "BA Cómo Llego" y usar aplicaciones de transporte más convencionales como Google Maps que garanticen un nivel mínimo de seguridad.

SI USTED ES UNA PERSONA QUE PUEDE ESTAR EN RIESGO DE UN ATAQUE DIRIGIDO, CONTÁCTENOS.