Windows Phone et tracking gps : contre enquête

Windows Phone et tracking gps : contre enquête

Si vous suivez les actualités technologiques, vous n’avez surement pas raté la nouvelle du jour concernant Windows Phone : Microsoft accusé de tracking géographique

Le prélude

Depuis quelques temps je suis assez perplexe sur les ‘experts informatique’ surtout après l’épisode Cyfi, une fille de 10 ans qui aurait trouvé une faille critique dans iOS et android, allant jusqu’à dire :

Outre le fait de tricher, cette faille de sécurité intéresse fortement les développeurs car elle permettrait le piratage de nombreuses applications sur iOS et Android.

et quand on regarde un peu son exploit :

 En se déconnectant du Wifi et en modifiant l’heure de son téléphone, elle a découvert qu’elle pouvait faire pousser ses plantations plus vite dans farmville, sans attendre les minutes, voire les heures requises.

Si vous êtes un bon développeur ce problème doit vous être évident et classique… et bah pour des soit disant experts ça devient une faille critique de sécurité…

Donc aujourd’hui, c’est Windows Phone qui est concerné par ce problème d’expertise, notre plateforme favorite nous espionnerait, il faut dire que depuis l’affaire iOS sur le tracking géographique, c’est devenu un peu le truc hype, évidemment, android a aussi eu le droit à son affaire tracking (il faut dire qu’avec son accès bas niveau, il est possible de faire n’importe quoi à votre téléphone) et donc un expert pour se mousser aurait trouvé lui aussi les traces d’un tracking géographique dans Windows Phone, analysons cela.

Qu’est-ce qu’un tracking géographique ?

On peut parler de tracking géographique lorsque votre téléphone stocke régulièrement vos coordonnées gps à une fréquence tel qu’il est possible de savoir précisément ou vous étiez dans un intervalle de temps assez court (maximum l’heure), on peut donc définir la notion de tracking géographique par :

  • identifier l’utilisateur
  • un envoi régulier des données de géolocalisation
  • récupération de la localisation non justifié par l’utilisation du téléphone
  • un envoi non justifié des données
  • une localisation précise (on acceptera comme assez précis la distance d’un kilomètre)
  • géolocalisation non indiqué à l’utilisateur
  • non désactivable
  • les données sont stockés et accessible par l’entreprise

La découverte de l’expert

The litigation, brought on behalf of a Windows Phone 7 user, claims Microsoft transmits data — including approximate latitude and longitude coordinates of the user’s device — while the camera application is activated. It seeks an injunction and punitive damages, among other.

ou encore

An analysis by Samy Kamkar says that the Camera application sends the device’s location–complete with latitude and longitude, a unique ID, and nearby Wi-Fi access points–to Microsoft even when the user has not given the app permission to do so.

 

A noter que le chercheur a porté plainte.

Revenons sur les différents points qui pourraient qualifier un programme de faire du tracking de géolocalisation

Vérification des faits

J’ai fait le test moi-même en mettant mon pc en man-in-the-middle, c’est à dire entre le téléphone et l’accès internet, de sorte que tous les échanges internet passent par le pc et sont donc consultable. Voici donc à quoi ce que l’on reçoit lorsque qu’on lance l’application appareil photo :

Il y a en effet des échanges avec les serveurs location.live.net de microsoft. Si on regarde ce que l’on a dedans :

<RequestHeader>
<TrackingId>#####</TrackingId>
<Timestamp>2011-09-03T01:01:32.321+02:00</Timestamp>
</RequestHeader>
<TileParameters TileSizeInBytes="100000" BlobType="Wm7HashXmlText" DeltaType="Complete" IncludeTileData="Complete" BeaconGroupMask="Gsm"/>
<Position Latitude="######" Longitude="#####" Altitude="0"/>
<OperatorId mcc="###" mnc="###"/>

Donc oui il y a un envoi des coordonnées (non précises) de votre localisation lorsque vous entrez dans l’application photo. Mais est-ce pourtant une preuve de flicage ? Nous allons le voir de suite !

Pourquoi Microsoft ne traque pas les utilisateurs

Identification de l’utilisateur

La requête envoyé au serveur de localisation (bing) ne contient ni votre numéro de téléphone, ni l’identifiant du téléphone et encore moins votre mail. Il n’y a donc pas à proprement parler d’éléments permettant de facilement identifier une personne.

réponse : NON

envoi régulier des données de géolocalisation

Il suffit de lire les propos du chercheur pour se faire une idée de la question. Les données sont envoyées uniquement lorsque l’application appareil photo est lancée. Déjà, on ne lance pas forcément l’application appareil photo régulièrement, sauf si vous photographiez tout ce que vous voyez, il va être difficile de connaitre vos déplacements juste avec ça. En étudiant votre twitter ou votre facebook, en regardant votre foursquare et en regardant les métadatas de vos photos flickr, j’en saurais surement plus sur vos déplacements que via cette soit disant fuite…

réponse : NON

récupération de la localisation non justifié par l’utilisation du téléphone

Pourquoi l’appareil photo aurait besoin de votre localisation ? Tout simplement pour la stocker dans le fichier de la photo, on appelle cela les données EXIF, elles contiennent la date, le type d’appareil photo, les réglages de focal, zoom, etc… et donc les coordonnées de localisation. Ces données peuvent être utile pour des applications comme Picasa, Flickr ou encore google maps (affichage des photos prisent à un endroit précis). Donc pour remplir ces données, le téléphone à besoin de votre localisation.

A noter, que sous mango, la localisation se fait après avoir pris une photo et non au lancement de l’application photo, ce qui change un peu les données.

réponse : NON

un envoi non justifié des données

Le téléphone ne devrait pas devoir envoyer les données alors qu’il dispose d’une puce gps !

Bon ça c’est dans le monde des bisounours, car dans les faits, un gps mets un peu de temps à savoir où il est, il suffit de voir combien de temps votre gps tom-tom ou garmin met comme temps pour se synchroniser. Pour aller plus vite (car on ne va pas attendre 3 minutes pour avoir une coordonnées), on peut se servir de la puissance de réception des différents relais téléphonique (on connait leurs positions géographique) que l’on capte, on peut ainsi avoir rapidement une information de la zone ou on se trouve, on diminue ainsi le nombre de satellite gps que l’on doit synchroniser pour avoir sa position.

Pour encore être plus précis, on peut se servir aussi des réseaux wifi que l’on capte. Imaginons, si je capte fortement le réseau wifi “gare de Lyon 3” je peux facilement en déduire que je suis dans la partie est de la gare de Lyon. On peut généraliser cela à tous les réseaux wifi, car autant il peut y avoir plusieurs WifiMaison en France, autant il ne peut y avoir qu’un seul réseau wifi avec comme mac 5E:AF:56:B2:AF:15, si Microsoft sait ou se trouve cette mac, il peut m'aider à savoir ou je suis.

Voilà donc pourquoi on envoie nos données gps aux serveurs de microsoft, à partir de notre localisation approximative et des réseaux wifi que l'on a autour de nous, le serveur microsoft à partir de ces données (par exemple les réseaux wifi capté pendant les captures Bing Maps), peut préciser notre position gps.

Enfin, cela n'est pas propre à l'appareil photo, mais à toutes applications (tierce ou native) qui utilise les coordonnées gps.

réponse : NON

une localisation précise

Les coordonnées envoyé ne sont pas forcément très précise (sauf si vous veniez d’utiliser le gps de façon précise juste avant), pas assez précise pour dire que vous étiez au 23 rue de la paix, mais assez pour dire que vous étiez dans ce quartier.

réponse : OUI MAIS

 géolocalisation non indiqué à l’utilisateur

La première fois que vous ouvrez l’application photo, le téléphone vous demande si vous souhaitez incruster les coordonnées gps à vos photos.
réponse : NON

géolocalisation non désactivable

Il existe deux réglages dans les paramètres :

  • localisation : activé/désactivé

“Les applications pour lesquelles vous avez précédemment activé les services de localisation peuvent désormais accéder à votre localisations.”

avec en plus un lien “déclaration de confidentialité”

Lorsque l’on désactive ce service, les données ne sont plus envoyées, on peut donc dire que Microsoft respecte bien ses engagements sur le coup

Une deuxième option existe dans les réglages de l’application photo :

  • Inclure les informations de localisation (GPS) dans les photos prises

Encore une fois, microsoft respecte bien ses engagements, les coordonnées ne sont pas stockées dans la photo. Toutefois, c’est là où peut être la confusion, l’application photo essaie quand même de géolocaliser le téléphone et donc d’envoyer des requêtes aux serveurs de localisation si cette option est désactivé. C’est une erreur, l’application ne devrait pas le faire car inutile, mais l’option dit bien si on veut les inclure, pas si on veut désactiver la géolocalisation (vu qu’il y a procès, il faut être précis dans la compréhension).

Toutefois, ce comportement c’est sous nodo. Sous mango, lorsque l’on désactive cette option, l’application ne demande plus de localisation et donc aucun envoi aux serveurs.

réponse : NON

les données sont stockés et accessible par l’entreprise

Sur ce point, cela va être difficile à trancher car n’ayant pas accès aux serveurs de microsoft, toutefois, je dirais que l’envoi des données est justifié et lié à un service, ce qui change pas mal de choses si on compare à un système qui envoie les données pour aucune raison.
réponse : AUCUNE IDEE

Conclusion

Il n’y a à mon goût aucun défaut de la part de microsoft, l’envoie des données est justifié, n’est pas caché de l’utilisateur, désactivable, etc… J’hésite donc entre l’incompétence du chercheur, la volonté de se faire mousser ou l’appât du gain. La plainte déposée par ce dernier me fait tendre vers la 3ème réponse.

Postscriptum

J’ai continué un peu mes recherches notamment sur le service web utilisé pour la géolocalisation. Ce service web n’est pas du tout spécifique à Windows Phone en fait, il est aussi utilisé par IE9 pour la géolocalisation HTML5 (tout comme chrome et firefox qui utilise un service similaire) avec les mêmes paramètres, les mêmes retours, etc… Vous pouvez jouer avec si vous voulez, voici un exemple de requête :

POST https://inference.location.live.net/inferenceservice/v21/Pox/GetLocationUsingFingerprint HTTP/1.1
Accept: */*
Accept-Language: en-us
Content-Type: text/xml
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Host: inference.location.live.net
Content-Length: 1066
Connection: Keep-Alive
Cache-Control: no-cache

<getLocationUsingFingerprint xmlns="http://inference.location.live.com"><requestHeader><timestamp>2011-02-14T16:22:47.0000968-05:00</timestamp><applicationId>e1e71f6b-2149-45f3-a298-a20682ab5017</applicationId><trackingId>21BF9AD6-CFD3-46B3-B041-EE90BD34FDBC</trackingId><deviceProfile ClientGuid="0fc571be-4624-4ce0-b04e-911bdeb1a222" Platform="Windows7" DeviceType="PC" OSVersion="7600.16695.amd64fre.win7_gdr.101026-1503" LFVersion="9.0.8080.16413" ExtendedDeviceInfo="" /><authorization /></requestHeader><beaconFingerprint><detections><wifi7 BssId="00:1c:b3:af:97:6e" rssi="-25" /><wifi7 BssId="90:84:0d:de:6d:99" rssi="-45" /><wifi7 BssId="78:ca:39:42:7d:77" rssi="-47" /><wifi7 BssId="78:ca:39:42:6a:d1" rssi="-51" /><wifi7 BssId="90:84:0d:de:6d:9a" rssi="-59" /><wifi7 BssId="00:1e:52:7b:ad:49" rssi="-60" /><wifi7 BssId="00:26:62:b0:18:e9" rssi="-61" /><wifi7 BssId="00:0f:b5:a0:22:76" rssi="-67" /><wifi7 BssId="00:1d:7e:a0:90:7f" rssi="-69" /><wifi7 BssId="00:22:6b:ea:c8:89" rssi="-84" /></detections></beaconFingerprint></getLocationUsingFingerprint>


HTTP/1.1 200 OK
Content-Type: application/xml; charset=utf-8
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Date: Mon, 14 Feb 2011 16:22:47 GMT
Content-Length: 735

<?xml version="1.0" encoding="utf-8"?><getLocationUsingFingerprintResponse xmlns="http://inference.location.live.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><getLocationUsingFingerprintResult><responseStatus>Success</responseStatus><locationResult><resolverStatus Status="Success" Source="Internal"/><resolvedPosition Latitude="37.605433" Longitude="-77.527176" Altitude="0"/><radialUncertainty>350</radialUncertainty><tileResult/><trackingId>21bf9ad6-cfd3-46b3-b041-ee90bd34fdbc</trackingId></locationResult><extendedV21Result CrowdSourcingLevel="Medium" ServerUtcTime="2011-02-14T16:22:47.645487Z"/></getLocationUsingFingerprintResult></getLocationUsingFingerprintResponse>
Comments are closed.