Consolidated.db : la polémique et les faits

Anthony Nelzin-Santos |
« Apple suit à la trace les utilisateurs d'iPhone », « l'intolérable indiscrétion du mouchard de l'iPhone » : tout ou presque a été dit depuis la publication d'iPhoneTracker. Apple n'est pas exempte de critiques sur ce point : oui, les iPhone et iPad 3G stockent leur position dans un fichier non protégé et facile à récupérer et lire. Mais non, ce fichier n'est pas un mouchard, et il faut bien veiller à démêler le vrai du faux. Explications.

%C2%A9%20gothick_matt
Image (cc) Matt Gibson


Un mouchard dans l'iPhone le jour du lancement de Skynet ?
Cette « affaire » a commencé avec la publication par le Guardian d'un article détaillant la trouvaille d'Alasdair Allen et Pete Warden, deux chercheurs en sécurité pour O'Reilly. En travaillant sur des systèmes de visualisation de la localisation, ils sont tombés par hasard sur un fichier stockant toutes les données de localisation des iPhone et iPad 3G. Ce fichier est stocké en clair, sauvegardé par iTunes et donc stocké sur Mac ou PC : ils ont donc développé iPhoneTracker, un outil permettant de le lire et d'afficher son contenu sur une carte.

iPhoneTracker

« Apple permet ainsi à n'importe qui (une épouse jalouse, un détective privé…) pouvant accéder à votre iPhone ou votre ordinateur d'obtenir des informations détaillées sur les lieux dans lesquels vous vous êtes rendus » expliquait Warden, repris bien vite par la presse généraliste qui, comme la presse spécialisée, a fini par parler de mouchard. Problème : comme nous l'expliquions hier, cette découverte n'en est pas une, et ce fichier n'est pas un mouchard (lire : iPhone et iPad 3G laissent trop facilement filtrer leur position).

Consolidated.db
Le fichier en question est une base de données nommée Consolidated.db. Comme elle est stockée dans la partition utilisateur des iPhone et iPad 3G, elle est sauvegardée par iTunes et donc accessible sur PC ou sur Mac si la sauvegarde n'est pas chiffrée. Ce n'est pas la seule base de données ainsi accessible : tous vos SMS, par exemple, sont stockés dans une base de données tout aussi facilement accessible, même si votre iPhone ou iPad n'est pas jailbreaké, et à condition que votre sauvegarde ne soit pas chiffrée.

iPhone%20Backup%20Extractor%20%5BUNREGISTERED%5D
Si la sauvegarde n'est pas chiffrée, un simple utilitaire permet d'extraire la fameuse base de données en question.


On peut utiliser un simple utilitaire (comme iPhone Backup Extractor, installation de Mono obligatoire) pour récupérer ces bases, donc cette fameuse base Consolidated.db (dans /private/var/root/Library/Caches/locationd). Elle se révèle alors être une base SQLite dont la table CellLocation contient la majeure partie des données : chaque position est enregistrée sous la forme d'une latitude et d'une longitude associées à un timestamp (date et heure de l'enregistrement à la seconde près).

Paul Courbis parlait de ce fichier en septembre 2010. Mieux encore : dès l'été 2010, c'est-à-dire dès la disponibilité d'iOS 4, Alex Levinson avait repéré Consolidated.db, au point d'en faire le sujet d'une conférence en novembre 2010, et d'en parler dans un livre sur l'informatique numérique légale appliquée à iOS un mois plus tard !

photo

Géolocalisation : une histoire ancienne et connue
Consolidated.db est spécifique à iOS 4, mais Levinson rappelle qu'Apple enregistre depuis bien plus longtemps la localisation des appareils dotés d'une puce 3G ou CDMA. Dans les versions précédentes d'iOS et ce depuis février 2008 (lancement du SDK iPhone), la localisation était cependant enregistrée dans un fichier qui n'était accessible ni à l'utilisateur, ni aux applications, et qui ne sortait pas de l'iPhone ou de l'iPad.

MAMP
La table CellLocation de la base de données : on y croise latitude, longitude et timestamp.


Le fichier en question, h-cells.plist, était stocké dans /root/Library/caches/locationd, la partition système. Cela ne veut pas dire qu'il était particulièrement difficile d'accès : Levinson, qui travaille dans le domaine de l'informatique légale, a déjà réussi à le manipuler par le passé sans trop de problèmes. Le problème de Consolidated.db est donc bien qu'il est facile d'accès.

Trop facile d'accès ? Non : il faut avoir un accès physique à la machine de l'utilisateur ou à son smartphone pour l'extraire. Quitte à y être, autant lire son courriel, jeter un œil à son historique de navigation, et scanner son disque à la recherche de photos compromettantes. Quitte à aussi fouiller dans les bases de données contenues par une sauvegarde iPhone non chiffrée, autant extraire la base de SMS. Bref, Consolidated.db est un des symptômes d'un malaise plus grand, mais pas le malaise lui-même.

Core Location
Ne reste donc qu'un seul problème potentiel : que ce fichier soit utilisé par Apple ou ses partenaires à des fins légales, mais pas forcément sympathiques (publicité ciblée par exemple). Ce fichier est en fait utilisé à des fins internes : comme l'explique Alex Levinson, il est utilisé par Core Location, le framework qui permet aux applications d'accéder à la localisation du téléphone. Comme h-cells.plist avant lui, Consolidated.db une forme de « cache » généré automatiquement par l'iPhone ou l'iPad à intervalles réguliers (entre 1 et 10 minutes) que les applications peuvent lire pour accéder rapidement à la localisation de l'iPhone.

points-du-29-mars-2011
Les points relevés par notre iPhone le 29 mars 2011. Les lieux précis dans lesquels nous sommes allés ne sont pas listés, mais les points sont autour.


Avant iOS 4 et le multitâche, les applications n'avaient besoin de la localisation que lorsqu'elles étaient à l'avant-plan : le fichier h-cells.plist, dans la partition système, suffisait donc. Avec iOS 4 et le multitâche, les applications peuvent désormais utiliser la localisation en arrière-plan : parce qu'Apple a changé certaines de ses APIs et met les applications dans un bac à sable, ce cache de la localisation devait être déplacé dans la partition utilisateur.

carto-antennes-relais-7e-arrdt-230311
La carte ressemble en fait à deux gouttes d'eau à celle des antennes-relais dans le quartier, plus quelques bornes WiFi, dont les SSIDs sont d'ailleurs stockés dans un champ.


Core Location peut être utilisé de deux manières par les applications : par défaut, les applications ayant besoin de connaître la position de l'iPhone n'utilisent que la triangulation cellulaire et WiFi ; celles qui ont besoin d'une grande précision (logiciels de navigation) peuvent en plus demander à utiliser le GPS. La structure de la base Consolidated.db le reflète : les tables CellLocation et CDMACellLocation stockent les données de triangulation cellulaire (réseaux GSM/UMTS et CDMA), la table WiFiLocation stocke les données de triangulation WiFi.

Ces données ne sont pas toujours fiables : si vous avez utilisé iPhoneTracker, vous aurez remarqué que les positions qu'il liste sont parfois fantaisistes. Par défaut, il n'utilise que les données de triangulation cellulaire, en les simplifiant d'ailleurs pour éviter d'être transformé en outil d'espionnage. Son code étant librement disponible, nous l'avons modifié pour qu'il prenne en compte les données de la triangulation WiFi : il devient alors bien plus précis.

Capture%20d%E2%80%99e%CC%81cran%202011-04-21a%CC%80%2015.05.28
iPhoneTracker modifié pour lire les données de triangulation WiFi et ne pas simplifier la précision.


Nous n'avons par contre jamais été en mesure d'utiliser les données de la triangulation GPS, qui permettraient d'obtenir des données précises au mètre près. La base Consolidated.db contient une table Location qui pourrait contenir les données GPS, mais celle-ci est vide, même après avoir utilisé des applications utilisant bien le GPS. Il semble donc que Consolidated.db n'enregistre pas les positions GPS (Will Clarke n'a semble-t-il pas non plus réussi à trouver ces données, ce qui semble confirmer notre hypothèse). Cela semble logique : si une application a besoin du GPS, c'est qu'elle a besoin de données précises mises à jour en temps réel, et pas de données mises en cache.

Nous avons par contre remarqué que la base de données continue à être remplie même si les services de localisation sont désactivés, ce qui confirme que c'est iOS lui-même qui effectue ses relevés à intervalles réguliers (de 1 à 10 minutes).

Apple et la géolocalisation : cartes sur table
Mais de mouchard il n'y a pas. On peut difficilement reprocher à Apple de ne pas être transparente au sujet de son utilisation des données de géolocalisation. Elle précise ainsi dans le contrat de licence de logiciel iPhone :

« Apple, ainsi que ses partenaires et titulaires de licence, peuvent vous fournir certains services basés sur des informations géographiques via l’iPhone. Pour fournir et améliorer ces services, lorsqu’ils sont disponibles, Apple, ainsi que ses partenaires et titulaires de licence, peuvent transmettre, recueillir, conserver, traiter et utiliser les données concernant votre localisation, notamment la position géographique en temps réel de votre iPhone et des demandes de recherche de localisation.

Les données et demandes de localisation sont recueillies par Apple dans un formulaire qui ne vous identifie pas personnellement et peuvent être utilisées par Apple, ainsi que par ses partenaires et titulaires de licence, pour fournir et améliorer des produits et services géodépendants. En utilisant sur votre iPhone l’un des quelconques services gérant la localisation, vous acceptez qu’Apple, ainsi que ses partenaires et titulaires de licence, transmettent, recueillent, conservent, traitent et utilisent les données concernant votre localisation pour vous fournir lesdits produits et services et les améliorer. »


On rappelle sans se faire d'illusions que tout utilisateur est censé avoir lu ce contrat avant de l'accepter, et que ce contrat est d'ailleurs disponible en ligne, le paragraphe ci-dessus étant situé à la page 18. C'est d'ailleurs en publiant la mise à jour de ces conditions à l'occasion de la sortie d'iOS 4 qu'Apple s'est fait épingler (à raison) par le Congrès américain (lire : Apple collecte vos infos de localisation : le Congrès US n'apprécie pas).

Apple précise en effet qu'elle collecte une partie des données de géolocalisation, les anonymise et les transmet à ses serveurs pour « améliorer les produits et services basés sur la géolocalisation ». Comme Google avec Android, Apple se sert d'iOS pour scanner les SSIDs des réseaux WiFi environnants pour améliorer sa base de données de triangulation WiFi. Elle le fait depuis avril 2010, puisqu'elle utilisait auparavant la base de données de Skyhook pour cette fonction.

skitched

Ces données sont envoyées deux fois par jour en utilisant un identifiant aléatoire changé toutes les 24 heures et en empêchant toute forme d'identification personnelle (lire : Collecte des données : Apple s'explique). La firme de Cupertino est susceptible de transmettre ces données à ses partenaires, mais elle ne l'a pour le moment fait qu'avec Google et Skyhook.

Apple collecte aussi certaines données de localisation pour son service de publicité iAd. Cette fois, Apple ne stocke pas la position en base de données : elle déduit de la localisation un code postal, qu'elle stocke, là encore en anonymisant les résultats. Les données ne sont conservées que six mois pour « administrer et améliorer le réseau iAd », puis étêtées.

Dans les deux cas, les données ne sont pas transmises en temps réel. Apple ne pourrait d'ailleurs pas le faire sans tomber dans l'illégalité : la loi californienne, applicable dans le cas d'Apple, interdit « l'utilisation d'un appareil électronique de suivi pour déterminer l'emplacement ou les mouvements d'une personne », sauf si l'utilisateur lui-même a demandé à être localisé (code pénal californien, section 637.7).

Ni Allen, ni Warden, ni Levinson n'ont jamais vu Consolidated.db être transmis à des serveurs externes : l'hypothèse du mouchard tombe. Cela ne veut pas dire que l'on ne puisse pas critiquer Apple quant à son utilisation des informations de localisation à des fins commerciales, comme le prouvent les deux points soulevés ci-dessus. Mais il s'agit alors d'un tout autre débat.

Les cartes, les cartes, les cartes
skitchedComment donc interpréter cette réaction épidermique face à cette « découverte » ? Le cartographe Brian Harley parlait du « pouvoir des cartes », et il y a sans doute de cela. La collecte des données de localisation par Apple n'est en effet ni nouvelle ni particulièrement secrète, mais l'affichage de ces données sur une carte a une certaine force « pédagogique » qui a certainement permis une prise de conscience chez des gens qui l'ignoraient.

Alors que de plus en plus de services pistent divers aspects touchant à la vie privée de leurs utilisateurs pour des motifs divers, Consolidated.db peut apparaître comme une goutte d'eau chez certains. Mais les faits sont là : cette base de données est une fonction d'iOS et non un mouchard, et une fonction qui ferait hurler les mêmes utilisateurs si elle n'était pas présente.

Cela ne veut pas dire qu'il faille accepter que cette base de données contienne tant de données (tout l'historique alors qu'elle pourrait effacer les traces plus anciennes — ce n'est peut-être pas un hasard si les experts en informatique légale la connaissent si bien), et encore moins qu'elle soit exploitable sur Mac sans que l'iPhone ne soit branché. C'est là un des aspects pervers de la sauvegarde complète des appareils iOS, avec dans le lot des données assez sensibles transmises sans chiffrement. Il est bien entendu possible de chiffre sa sauvegarde d'iPhone ou d'iPad, ce que nous vous conseillons d'ailleurs de faire.

Mais alors qu'Apple entend préserver la vie privée de ses utilisateurs et pénétrer le marché de l'entreprise, elle aurait peut-être tout intérêt à renforcer la sécurité de son mécanisme de sauvegarde, qui est finalement le seul point véritablement important dans toute cette affaire.

[MàJ@17h40] John Gruber, traditionnellement (très) bien informé (lire : directement par des ingénieurs Apple) confirme que Consolidated.db est bien une base de données de cache pour Core Location.

Il qualifie cependant le fait que cette base de données conserve tout l'historique de géolocalisation de « bogue » : « l'historique de localisation devrait être supprimé mais ne l'est pas, soit que ce soit un bogue ou plus probablement un oubli. Quelqu'un a dû écrire le code pour mettre en cache les données de localisation mais n'a jamais écrit le code pour supprimer les données les plus anciennes — ce qui était censé être une base de données de vos positions récentes devient un historique complet de votre localisation. »

Pour lui, aucun doute : Consolidated.db sera toujours là dans la prochaine mise à jour d'iOS car c'est une fonction importante, mais il perdra la mémoire plus facilement. On ne s'en plaindra pas, bien au contraire.
avatar Hackintosh | 
Sa fait quoi ? Il peuvent nous retrouver si ont est perdu.
avatar sekhmet | 
bon c'est exactement ce que je disais hier, s'il n'y a pas transmission des informations individuelles chez Apple, et que ça reste sur notre iphone ou ordinateur, il n'y a pas de mouchard. encore une tempête dans un verre d'eau. Mais effectivement cela soulève le point de la protection de la vie privée, on pourrait rajouter ceux qui mettent pas de mot de passe admin sur leur ordi, ou qui divulgue leur vie au complet sur facebook...
avatar Thierry61 | 
Très bien ce papier ! Informatif et remet bien les choses en perspective.
avatar snowers | 
Donc en gros, il y a une polémique car les gens ne lisent pas les contrats de licence. Ca vaut bien le coup, sur des sites genre [s]Rage[/s]MacBidouille que faire des titres aussi... comment dire... rageux Oô
avatar gpsnail | 
Perso les relevés bancaires sont surement plus intéressant pour un détective privé que la localisation en elle-même Une tempête dans un verre d'eau, non mais un bon coup de vent..
avatar liocec | 
Désolé, mais il n'est dit nul part que lorsqu'on désactive le GPS, l'iPhone continue d'enregistrer une localisation ou pseudo-localisation. Pourquoi donc ne pas faire pareil avec la webcam ? Le Client l'éteint, mais toutes les 10 mn il flache un coup, il floute un peu les photos et les transmet à Apple et ses partenaires. D'autre part, même si on "signe" un accord avec Apple, personne n'est capable de lire les 64 pages de l'accord. Pourquoi ne pas faire signer un abonnement de 30 euros/mois à la page 63 ? Parce que ce serait une escroquerie et ici le fait de ne pas préciser cette action contre la vie privée est une forme d'escroquerie.
avatar hok | 
Merci pour cet excellant article, j'aimerai avoir un moyen de récompenser votre excellence journalistique dès fois. On pourrait par exemple, utiliser les payements intégrés de iOs quand un article nous enthousiasme.
avatar redchou | 
J'ai bossé pour Skyhook. C'était assez bien payé pour se balader avec un récepteur "GPS+wifi" dans sa voiture. Dommage que l'on ne soit pas payé autant pour utiliser sont iPhone ^_^.
avatar Anthony Nelzin-Santos | 
@liocec j'ai testé (je suis un fada de la geoloc), même si les services de localisation sont désactivés, cette base continue à se remplir (avec les données cellulaires et WiFi, puisque cette base n'utilise pas le GPS). Le seul moyen est de couper complètement l'iPhone du monde, geolocalisation et réseau. Ou de modifier les permissions de la base avec un iPhone jailbreaké, mais iOS utilise alors un fichier log temporaire pour stocker les informations pendant un court moment).
avatar gpsnail | 
@liocec Exact mais dans les faits tout le monde le sait ou s'en doutait. Ce n'est pas de l'escroquerie ce qui en serait c'est que ce ne soit pas écrit, effectivement on ne lit pas l'accord de licence mais c'est un tord de notre part sinon il n'en fournirait pas le fournissant ils sont dans leur bon droit. Personne ne lit la loi française et pourtant nul n'est censé l'ignorer
avatar jj.dr | 
@ liocec Il faut savoir raison garder. Il ne semble pas qu'à ce jour les informations aient été transmises à qui que ce soit, Apple compris ! C'est un fichier log qui est sauvegardé avec le reste de la configuration. SI Apple avait eu une intention maligne, on peut supposer qu'ils auraient eu la bonne idée de crypter ce fichier... Plus simple même, ils auraient envoyé la position en question et conservé l'info dans leur propre base. (PS: les opérateurs télécom ont cette information - et même plus - et l'obligation de la garder 3 ans pour pouvoir les produire en justice, sur réquisition) La vraie question, ce me semble, c'est l'utilité de ce fichier. A priori je ne la vois pas, mais c'est peut être parce que je n'ai jamais construit de smartphones ni développé de services associés (personne n'est parfait...). En revanche, ayant une petite expérience de la conduite de projets de dev, je sais qu'il arrive que des éléments (logiciels, logs, etc...) soient oubliés par les devs, et qu'ils restent des années avant que quelqu'un se rende compte du problème. En l'occurence, iOS4 est sorti il n'y a pas loin d'un an... Mais une fois de plus le sensationnalisme (et donc les théories conspirationnistes) l'emporte sur la raison... Attendons la réponse et/ou la réaction d'Apple pour connaître l'origine de la chose ! Et personnellement, cryptant mes sauvegardes iDevices, je ne peux que m'en féliciter ! (c'est un petit clic bien visible de tous dans une interface archi simple qui s'appelle iTunes).
avatar BananaYatta | 
L'utilité de ce fichier est évidente : accéder rapidement aux coordonnés GPS aproximatives afin de nous localiser plus rapidement quand on utilise Plan.app ou autre... Un peu comme la capture d'écran qui s'affiche pour donner l'illusion que l'app se lance plus vite alors qu'elle se charge derrière cette capture. Pour moi, y a pas de polémique : on crypte ses sauvegardes et basta...
avatar XoruX | 
que se passe-t-il quand on est en mode avion ? sinon, cela me fait penser à l'option de safari "ouvrir automatiquement les contenus fiables"... Il faudrait probablement penser a priori que rien n'est fiable et dans le doute, chiffrer par défaut les sauvegardes iPhone. Cette approche un peu légère et peu explicite peut être reprochée à Apple; mais bien sur il faut relativiser la dangerosité de tout ça.
avatar Guh | 
Finalement, ce n'est pas Apple ou autre Big Brother qui est à craindre ici, mais bien vos proches qui ont maintenant toutes les infos techniques pour récupérer vos itinéraires à une date donnée. Messieurs à double vie, méfiez-vous ! Les femmes aussi maîtrisent la techno...
avatar redchou | 
Qu'une seule chose à dire:
Et la il ne faut même pas avoir le téléphone ou la sauvegarde sous la main. Juste être votre opérateur téléphonique. Et en plus de votre localisation, on sait tous sur vos communications. Qui vous appelez, à qui vous envoyez des message, sur quel site vous surfez, etc... En plus, la conservation de ces informations est une obligation légale. Téléphone portable != vie privée.
avatar Orus | 
Belle explications. Mais c'est le monde des bisounours. Conclusion c'est iOS lui même qui nous trace et nous suit dans tous nos mouvements et impossible de le désactiver. Donc c'est bien un mouchard. Un mouchard dormant, prêt à être utilisé quand il le faudra. Totalement inquiétant.
avatar hok | 
Oh mon dieu Maps.app conserve en cache les images des lieux que vous avez regardé et ou vous vous êtes localisé, Apple nous trackeeuuuuxxx.
avatar hok | 
Oh mon dieux Firefox enregistre tout les sites ou je suis allé, plus le contenu en cache, avec leur heure et le nombre de visite, Mozilla nous trackeeuuuuxxx.
avatar redchou | 
@hok Mdr
avatar thierry37 | 
Super article. Très informatif et qui rappelle les faits réels : oui il y a collecte, on le savait depuis longtemps et c'est même écrit noir sur blanc dans les conditions générales. Est ce que ça ait ramer les back up de crypter ? Est ce que le logiciel "modifié" à la source est dispo ? (pour enlever cette incertitude que le développeur original a introduit ) Merci!!
avatar Mektoub | 
Et il y a aussi un logiciel pour relire mes vieux sms que je n'ai pas "transportés" de mon iPhone 3GS vers iPhone 4 parce que j'ai préféré une fresh install?
avatar Anthony Nelzin-Santos | 
@thierry37 : la première sauvegarde chiffrée est un peu longue, après non. @Mektoub : à ma connaissance pas d'outils gratuits pour le faire (à part un truc en ligne limité et qui fonctionne quand il a envie, càd rarement). Mais si tu as la sauvegarde qui traîne, tu peux récupérer le fichier 3d0d7e5fb2ce288813306e4d4636395e047a3d28.mdbackup et son cousin 3d0d7e5fb2ce288813306e4d4636395e047a3d28.mddata dans ~/Library/Application Support/Mobile Sync/Backup/la-derniere-sauvegarde. Tu n'as plus qu'à trouver comment convertir ;-)
avatar rikki finefleur | 
Finalement c'est un bon exemple d'auto servitude.. En trouvant normal qu'un fabricant puisse connaitre le moindre de vos déplacements dans une ville, et retrace vos parcours .. C'est assez génial.. Un jour il sera peut être temps de renvoyer les constructeurs a leurs chères études et faire des phone un point c'est tout.. et ne pas s'asservir continuellement et progressivement vers leur flicage de plus en plus envahissant et dangereux.. Nos libertés s'envolent de jour en jour avec ce genre de fabricant..
avatar Anthony Nelzin-Santos | 
[quote=rikki finefleur]Finalement c'est un bon exemple d'auto servitude..[/quote] Il y a de ça, mais c'est réducteur de le dire ainsi. La vraie question, c'est celle de la mise en base de données non pas de personnes (tous les Etats ou presque l'interdisent) mais d'ensembles de personnes. On ne peut pas reconnaître un seul individu, mais on peut établir des modèles comportementaux (statistique comportementale, j'en faisait régulièrement pendant un temps, et la géoloc est l'aspect le plus important de tous) : où les gens vont, ce qu'ils aiment, ce qu'ils achètent, et où ils aiment et achètent. Mais on ne peut pas blâmer une entreprise pour ça, ce serait injuste. Nous sommes les seuls à blâmer, parce qu'on aime ces services qui nous disent quoi faire et que penser, et que nous encourageons donc les entreprises à les développer. C'est tout.
avatar redchou | 
"et faire des phones a point c'est tout" Mais un simple téléphone portable permet un traçage bien plus complet de l'utilisateur par l'opérateur, que celui fait par Apple et son iPhone... Voir la vidéo que j'ai mis dans un commentaire précédent..

Pages

CONNEXION UTILISATEUR