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í.
Update 2019-06-03: El 23 de abril de 2019, la Dirección General de Ciencias de la Información respondió a nuestro correo electrónico sobre los problemas y dijo que los problemas se solucionarán. La versión de Android de la aplicación "BA Como Llego" se actualizó el 5 de abril de 2019. Se resolvieron todos los problemas tratados en nuestro blog con respecto a la versión de Android. Sin embargo, todos los problemas en la versión de Apple iOS de "BA Como Llego" permanecen.
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.
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.
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.
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.
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.
En la Figura 4 hay varios aspectos a los que hay que prestar atención:
La aplicación utiliza la API de Google Maps para recuperar datos según la ubicación actual.
El protocolo usado es HTTP 1.0.
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.