
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.
- 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.
- 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.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.
ACTUALIZADO (3/febrero/2016)
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...
Por otra parte buena investigación debería hacerse viral, ahí esta la importancia de revisar los permisos de las aplicaciones.
Por el momento habrá que ver hacia donde envía los datos para agregar los dominios al archivo hosts
Buena investigación, Zerial.
Si estoy de acuerdo en todo lo indicado a las buenas practicas (no incluir archivos .old o que sean no requeridos para la app) . Quién acusa demuestra un buen dominio técnico (programación) pero claramente no en dirección de proyectos, a decir, tanto empresas particulares como estamentos de gobierno "encargan" estas aplicaciones, la administración y el análisis de sus datos debido a que realizar esto no es parte de " su negocio". Para mi tiene toda la lógica del mundo solicitar acceso a tus fotos con el objetivo de poder relacionar el contacto con la imagen que eventualmente pueda estar ligada a este ya que no se indica con claridad si el contacto es leido, eliminado y vuelto a crear, lo cual implicaría realizar este enlace contacto-imagen.
Por otro lado, si la subtel desea indicar la cantidad de móviles que descargaron la app por región o comuna e indicar cuantos usuarios únicos realizaron efectivamente la actualización usando la app, pues entonces es obvio que requiere geolocalizar el móvil y conocer de UUID de la máquina.
Bien por el programador que tuvo la curiosidad e investigó, pero debe abstraerse para poder ver el "big picture" y no sólo realizar acusaciones que, a mi parecer, tuvieron un análisis incompleto.
Si bien pasa esto con apps, investiga que hacen con los datos DTM que setean muchas páginas en las cookies de sesión mediante Adobe Analytics u otra plataforma....Claro...obviamente sin permiso de nadie
@No Soy Mortadelo:
Creo que simplemente no has entendido ni la mitad de lo que se ha publicado no solo en mi blog, sino en analisis paralelos tambien
En la última update me pedían acceso a la cámara, así que la borré.
Ahora sospecho de toda app que tenga relación con el gobierno.
Saludos
Saludos,
A partir de este punto se pueden entender el origen de los datos y el xq se pide esa información.
Para mi parecer queda claro que esto es un abuso y una mas del gobierno!
https://alertaauto.interior.gob.cl/
con lo anterior creo que utilizar https no es un problema
El punto que marca Zerial es el envío de un identificador del teléfono, más encima por conexión insegura, porque sí. Es como gritar el RUT en pleno paseo Ahumada. ¿Necesita la app identificar _mi_ teléfono? ¿Puede funcionar sin éste? (pista: sí)
Sobre lo de "probar" todas las combinaciones, es cosa de ver el problema al revés: teniendo el UUID, generas el hash con el salt que te regalan amablemente en el código fuente.