Dans cet article, je souhaite lister quelques points problématiques que j’ai pu observer, sur mon temps libre, au sujet de la plateforme Doctolib, réalisant donc une sorte d’audit que je souhaite vous partager.

Cet article est en cours de construction et sera mis à jour au fur et à mesure des nouveaux éléments que je pourrais obtenir.

1. Droit d’accès

Comme le prévoit l’article15 du règlement général sur la protection des données (RGPD), tout utilisateur·rice peut obtenir une copie de ses données personnelles (détenues ici par Doctolib). Doctolib précise également dans son engagement 4 dans la Charte de protection des données de santé à destination des patients, que « Vous pouvez récupérer ou détruire vos données personnelles de santé à tout moment. ». Je n’ai pas réussi à trouver la page permettant de télécharger mes données « à tout moment » comme le prévoit la charte.

2. Tracking non-anonyme

J’ai vu que le site web comme l’application Doctolib (qui est au passage simplement le site web encapsulé dans une application) faisaient des requêtes régulières à l’adresse « https://events.data.doctolib.com/live ». Ces requêtes transmettaient un certain nombre de données mais qui apparaissaient comme illisible. Voici un exemple :

{
    "DeliveryStreamName": "datafoundation-tracking-events",
    "Record": {
        "Data": "eyJuZXdfdmVyc2lvbiI6dHJ1ZSwibmFtZSI6ImhvbWVwYWdlIiwic3NpZCI6ImM5MDAyNDMwMjEybWFjLTQ0QVVmaW5MSmp1USIsInVzZXJfdHlwZSI6IlNlc3Npb24iLCJjcmVhdGVkX2F0IjoxNjIxNjc5NDc3NTIyLCJ1cGRhdGVkX2F0IjoxNjIxNjc5NDc3NTIyLCJjbGllbnRfdGltZSI6MTYyMTY3OTQ4MDY1NCwiZGV0YWlscyI6eyJjb3VudHJ5IjoiZnIiLCJkZXZpY2UiOiJkZXNrdG9wIiwicGFnZV91cmwiOiJodHRwczovL3d3dy5kb2N0b2xpYi5mci8iLCJlc2lkIjoiREVybDg4anJWNUZIaDZFQmJCODRNcE00IiwiZGV2aWNlX2NhdGVnb3J5IjoiZGVza3RvcCIsInVzZXJfYWdlbnQiOiJNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAxMF8xNV83KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvOTAuMC40NDMwLjIxMiBTYWZhcmkvNTM3LjM2IiwidXNlcl9pZCI6ImM5MDAyNDMwMjEybWFjLTQ0QVVmaW5MSmp1USIsImRwZF91c2VyIjpmYWxzZSwiZG9tYWluX25hbWUiOiJ3d3cuZG9jdG9saWIuZnIifSwiaWQiOiItNzQyMjUxNjM5NTYwMTQ2MDg3ODIzNTA2MzkwNjY4MzQ3ODEwMiJ9=="
    }
}

Comme on peut le deviner avec le nom « datafoundation-tracking-events » et l’url, il s’agit de données de tracking. Doctolib semble donc pister ses utilisateur·rice·s et ce pistage est effectué avant toute création de compte et acceptation ou refus de leur politique en matière de cookies ou de données personnelles. Les données envoyées semble être illisibles. En réalité, techniquement il est utiliser la fonction Javascript « btoa » qui permet d’encoder une chaine de caractères en base64. Mais cet encodage n’est pas une fonction de hachage cryptographique et peut être très simplement encoder de nouveau en chaine de caractère lisible (par exemple avec la fonction « atob » en Javascript). Ainsi, voici la données qui avait été précédemment transmise :

{
    "new_version": true,
    "name": "homepage",
    "ssid": "c9002430212mac-44AUfinLJjuQ",
    "user_type": "Session",
    "created_at": 1621679477522,
    "updated_at": 1621679477522,
    "client_time": 1621679480654,
    "details": {
        "country": "fr",
        "device": "desktop",
        "page_url": "https://www.doctolib.fr/",
        "esid": "DErl88jrV5FHh6EBbB84MpM4",
        "device_category": "desktop",
        "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36",
        "user_id": "c9002430212mac-44AUfinLJjuQ",
        "dpd_user": false,
        "domain_name": "www.doctolib.fr"
    },
    "id": "-7422516395601460878235063906683478102"
}

Comme on peut le voir, ces données comportent un certain nombre d’informations. Ici, il s’agit simplement de l’événement « homepage » qui indique que j’ai chargé la page d’accueil de Doctolib. On remarque un certain nombre d’identifiant et même un « user_id » qui correspondrait à une identifiant d’utilisateur·rice. En réalité, ici Doctolib créer un identifiant temporaire car j’ai ouvert la page d’accueil sans être connecté. Par contre, si j’étais connecté, il enverrait un identifiant composé uniquement de chiffre qui est l’identifiant de mon compte Doctolib. Par conséquent, on peut facilement conclure que ces données ne sont pas anonymes.

En faisant une analyse plus poussée, on découvre que chaque clic, chaque interaction avec le site web de Doctolib est enregistrée et envoyée aux serveurs de Doctolib. Ces données non anonymes comportent même des données de santé. En effet, j’ai testé de simplement sélectionner un type de rendez-vous dans un centre médical. Il y avait plusieurs spécialités différentes comme Gynécologie, Gériatrie, Vaccination, etc.. La sélection que j’avais faite a également été envoyée au serveur (avec la donnée nommée « speciality_id »). Ainsi, celui-ci sait quelle pathologie je suis potentielle sujet en sachant quelle spécialité je choisi. Cette donnée renseigne donc bien un possible état de santé et est donc une donnée de santé.

Ce traçage est problématique car il ne respecte pas l’engagement n°9 de la Charte de protection des données de santé à destination des patients qui précise que « Seuls votre professionnel de santé et vous-mêmes pouvez accéder à vos données personnelles de santé. Personne chez Doctolib ne peut accéder à ces données […] ». En plus, ce traçage pourrait également enfreindre l’article 82 de la loi Informatique et Libertés qui précise qu’une transmission d’information de ce type doit être « strictement nécessaire » pour bénéficier d’une exemption de consentement. La CNIL précise également sur son site qu’il faut que ces données soient anonymes. Ici, il apparait peu probable que la récupération et transmission régulière de chaque interaction faites sur le site web pour une finalité de tracking non anonyme soit strictement nécessaire au fonctionnement de Doctolib.

Selon la page « Suivre et optimiser l’activité du cabinet », on peut faire l’hypothèse que ces données sont utiliser par Doctolib pour la fonctionnalité de statistique et de rapport. Comme cette fonctionnalité n’est accessible que par abonnement payant, il s’agirait donc d’une utilisation commerciale de ces données. Doctolib précise pourtant que « Les données utilisées pour établir les statistiques du tableau de bord – Mon activité sont anonymisées et ne sont pas des données de santé ».

J’ai créé une extension pour Firefox qui permet d’intercepter ce pistage et de l’afficher dans un encart lorsqu’on navigue sur Doctolib : télécharger ce module. Il faut parfois attendre 30 secondes pour que des données apparaissent.

Pour aller plus loin, je vous conseille la lecture de cet article d’un chercheur de l’INRIA sur la destination de ces données.

3. Tracking externe

Doctolib propose un certain nombre de boutons et d’iframe pour « Optimiser mon site internet » (comme ils disent). Ces éléments contiennent souvent un lien qui permet de traquer lorsque l’utilisateur·rice clique dessus (grâce à des paramètre dans l’url) mais aussi une image, le logo de Doctolib, qui permet de déposer un cookie par la simple visite d’un site web d’un praticien. Lors du chargement du logo de Doctolib, le cookie déposé est nommé « __cf_bm » et est vraisemblablement un cookie de Cloudflare. Celui-ci n’est tout de même pas décrit par leur politique en matière de cookies.

Exemple de bouton Doctolib sur un site externe

4. Communications commerciales non-solicitées

Beaucoup les ont eu : « 🎥 Avez-vous déjà essayé la consultation vidéo ? » ou « Découvrez le partage de documents », Doctolib envoie de la communication commerciale non-sollicitée. Pourtant cela est illégal comme l’indique l’article L.34-5 du Code des postes et des communications électroniques ou même la CNIL sur son site : « pas de message commercial sans accord préalable du destinataire ».

Capture d'écran d'un courriel de publicité envoyé par Doctolib

5. (Problème résolu) Diffusion d’informations par messages d’erreurs

Lorsqu’on tente de se connecter sur pro.doctolib.fr, si on a un compte patient (un compte normal sur doctolib.fr) alors le formulaire indique qu’on s’est trompé de site (on est sur le site praticien et non le site patien). Cela permet de savoir si l’adresse électronique est présente dans la base de données des comptes patients sans même connaitre le mot de passe (en mettant n’importe quoi on a l’erreur). Cette information peut être utilisée de façon malveillante par les personnes envoyant des courriers électroniques pour savoir avec une liste d’adresses lesquels ont un compte Doctolib (pour du phishing).

Mise à jour du 2 août 2021 : je découvre aujourd’hui que ce problème a été résolu. Malgré le fait que j’ai alerté les services de sécurité de Doctolib il y a plusieurs mois, je n’ai jamais reçu de réponse à mon alerte.

Capture d'écran du site pro.doctolib.fr avec le message d'erreur "Vous avez essayé de vous connecter sur le site praticien avec votre compte patient."