En Chile se está cambiando la forma de marcar a los celulares y para esto, la Subsecretaría de Telecomunicaciones tuvo la iniciativa de lanzar una aplicación para los dispositivos móviles que facilitara la actualización de la agenda. Esta aplicación fue encargada a la empresa de desarrollo Cursor S.A.

Los primeros comentarios de quienes empezaron a instalar la aplicación, hacian referencia a la cantidad de permisos que requería para ser instalada y utilizada.

Entonces nos preguntamos: Una aplicación tan simple como actualizar tus contactos para que requiere tantos privilegios? Rapidamente uno podría pensar lo siguiente…

Identity : ???

: ??? Contacts : Ok, obviamente necesita acceder a mis contactos para poder modificarlos.

: Ok, obviamente necesita acceder a mis contactos para poder modificarlos. Location : ???

: ??? Photos/Media/Files : La aplicación tiene la opción de respaldar los contactos. Me imagino que este privilegio es requerido por esa funcionalidad.

: La aplicación tiene la opción de respaldar los contactos. Me imagino que este privilegio es requerido por esa funcionalidad. Wi-Fi connection information: Para enviar los contactos respaldados ???

Entonces empezaron las sospechas …

Por otro lado, la aplicación tiene un disclaimer donde se especifican las condiciones de uso y adicionalmente informa al usuario que la aplicación captura datos. El problema es que estos textos son como la típica letra chica de los contratos que buscan cagarte, con el fin de usar la aplicación para no tener problemas y con la confianza de que es una aplicación de gobierno, simplemente los usuarios aceptan los TOS e instalan.

En las últimas líneas de este disclaimer se indica que Subtel no recopila información de la libreta de contactos del usuario, por otro lado indican que Subtel retendrá para sí y estará facultado para utilizar libremente la información estadística del uso de la aplicación, indicando que la información recolectada para efectos de estadísticas corresponde a cantidad de veces que se abre la aplicación, cantidad de contactos actualizados y zonas geográficas donde se realizó la operación.

La tarea para la casa es verificar que información envía la app, como la envia y donde la almacena. En mi caso, las pruebas fueron realizadas sobre el paquete para Android, pero tengo entendido que la forma en que hicieron esta aplicación permite ser “empaquetada” tambien para iOS, por lo que el core de la app es la misma para ambos casos.

Lo primero que me llamó la atención fue que la aplicación tenga un tamaño de 7,2Mb. Me hizo pensar que es una aplicación con muchos componentes por defecto, que probablemente tenga archivos de “prueba” dentro y que no haya sido optimizada. Lo primero que hice fue descargar el paquete (APK) y desempaquetarlo.

Lo interesante es el directorio assets/ y el archivo classes.dex. Empezando por el directorio, encontré archivos de “respaldo” y archivos de pruebas, lo cual hacen que la aplicación sea de mayor tamaño. Analizando el archivo classes.dex tambien aparecieron componentes extras que no deberian estar en la aplicación como el lancher de la camra, entre otros. Viendolo del punto de vista de las “buenas practicas de desarrollo”, lanzar una aplicación o un sistema que incluye archivos de prueba o archivos “old” no es lo recomendado.

Si vamos un poco más allá, analizando el archivo assets/www/app/app.resource.js aparece una variable que define una URL correspondiente a un dominio o servidor que no es de la Subtel.

Claramente corresponde a la dirección donde se envía y almacecna la información estadística. Y ojo con el detalle: sin HTTPS.

Si revisamos el archivo assets/www/app/paso2/paso2-ctrl.js podemos ver en detalle que información envia a este servidor

Lo que aparece en ese archivo indica que se está enviando a un servidor de terceros la siguiente información:

Cantidad de contactos de la agenda

Cantidad de teléfonos de la agenda

Cantidad de contactos “convertidos”

Cantidad de números “convertidos”

Tiempo que se demoró en convertir

Información de ubicación GPS

UUID del dispositivo

Para comprobar que realmente la aplicación envia esta información, la instalé en un ambiente controlado y analicé el tráfico que genera, pudiendo confirmarlo.

Desde mi punto de vista, todo lo que he expuesto aqui tiene varios problemas:

El disclaimer o terminos y condiciones no habla sobre la empresa Cursor

Los datos, si bien no son “datos personales” como tal, si atentan contra la privacidad del usuario, por ejemplo la ubicacion gps.

Siendo una aplicacion hecha con recursos publicos, no te da la opcion de usarla sin que tus datos sean enviados a una empresa privada.

Se desconoce las politicas de seguridad y privacidad de aquella empresa que almacena y procesa la información-

La información es enviada en texto plano, es decir sin ningun mecanismo de cifrado.

Las reacciones de los usuarios demuestra un gran interes por el tema de la privacidad, sin embargo, las reacciones del gobierno y de la empresa encargada del desarrollo dejan mucho que desear. Por un lado, aparecio en subsecretario Pedro Huichalaf explicando lo siguiente

Por otro lado, algunas reacciones de los usuarios

En conclusión, siendo ciudadano no tengo el derecho de usar esta aplicación hecha con recursos publicos sin ser obligado a entregarle información a una empresa privada. Tal como dice el subsecretario, si dudo, mejor no la uso.

@spectresearch tambien estuvo investigando sobre el tema, este es su artículo: El tema de la aplicación “Nueva Forma de Marcar”.

Referencias al tema:

https://www.emol.com/noticias/Tecnologia/2016/01/26/785375/Aclaran-el-polemico-manejo-de-datos-de-la-aplicacion-de-la-Subtel-por-cambio-de-numeracion.html

https://www.cooperativa.cl/noticias/site/artic/20160126/pags/20160126195646.html (con spam al ingresar)

https://www.biobiochile.cl/2016/01/26/subtel-sale-al-paso-de-denuncias-respecto-a-supuesto-traspaso-de-informacion-en-app.shtml (con spam al ingresar)

Actualización

Anoche, Alejandro Vera publicó sus comentarios respecto a las denuncias realizadas de esta aplicación, entregando más detalles respecto al uso del UUID y comentando las declaraciones del gobierno respecto a este tema.

Alejandro comenta en este post lo siguiente (copy&paste):

Complicado lo de la aplicación móvil de la subtel (https://www.nuevaformademarcar.cl/). Las denuncias de Zerial y otros, que mencionan el uso indebido de datos son serias. Yo mismo he descargado la aplicación y examinado el código fuente, corroborando la denuncia. En la primera imagen se puede ver que la dirección a la que se envían datos estadísticos es a un dominio de la empresa desarrolladora, no de la subtel! y utilizando protocolo no seguro frown emoticon ; y en la segunda imagen se puede ver que envía el número de contactos, posición con latitud y longitud, cantidad de números convertidos y el tiempo de ejecución. Es decir, la empresa desarrolladora puede saber la posición exacta de tu dispositivo y permite hacerle un seguimiento. Fuerte.

Pero quizás lo más grave es lo que acabo de leer en emol: https://www.emol.com/…/Aclaran-el-polemico-manejo-de-datos-d…

Grave porque acá se da como explicación que el identificador no es el del dispositivo, sino de la instalación, lo que es simplemente una mentira. En la documentación oficial del framework de desarrollo (https://ngcordova.com/docs/plugins/device/) dice sobre el método getUUID() : “Get the device’s Universally Unique Identifier (UUID). The details of how a UUID is generated are determined by the device manufacturer and are specific to the device’s platform or model.”, más aún, viendo el código fuente del framework se puede ver que usa la variable ANDROID_ID (https://developer.android.com/…/provid…/Settings.Secure.html…) la que se define como “A 64-bit number (as a hex string) that is randomly generated when the user first sets up the device and should remain constant for the lifetime of the user’s device. The value may change if a factory reset is performed on the device.”, es decir sólo *podría* cambiar en caso que se haga un reseteo completo del móvil.

Esto es grave, y lo es por varias razones. Primero porque es una violación a la privacidad (no, Pedro Huichalaf, no necesita ser un dato de la anatomía humana para ser personal). Segundo porque en el caso de que subtel no haya estado consciente de esto (sino estamos hablando de un acto de corrupción), es una ilegalidad y falta de ética gravísima por parte de la empresa y una tremenda negligencia de parte de la subtel. Es esencial que el estado tenga mayor celo con la privacidad, muchas veces somos los desarrolladores los que incluso utilizando recursos propios nos esforzamos en proteger a los usuarios/ciudadanos y su privacidad, sin que el cliente/estado exija, fiscalice o siquiera valore este esfuerzo. Es imperativo que la subtel retire cuanto antes esta aplicación, se corrijan las falencias y se multe a la empresa desarrolladora. Cualquier otra solución no haría más que confirmar el desinterés de las autoridades por informar y proteger adecuadamente a las personas como fin.

Un excelente aporte a esta discusión.

Acaban de actualizar la aplicación, ingenuamente pensé que podian haber resuelto estos problemas, pero me encontré con una sorpresa que me hizo reir.

Hubo una modificación en el archivo paso2/paso2-ctrl.js, justo en la línea donde se envía el UUID

Antes:

$scope.estadisticas.deviceUUID = $cordovaDevice.getUUID();

Despues:

$scope.estadisticas.deviceUUID = sha256(‘Pr736Cur’+$cordovaDevice.getUUID());

En simples palabras, codificaron en SHA-256 el UUID y adicionalmente le agregaron un SALT, el cual se encuentra escrito en duro en el código. Cuando vi esto, pensé que podían haber implementado HTTPS y así no sería tan grave, sin embargo la URL donde envía la información sigue siendo HTTP, es decir, la información se envía en texto plano.

Saquen sus propias conclusiones…