L'entête HTTP problématique envoyé par Chrome à Google

L'entête HTTP x-client-data est systématiquement envoyé par Chrome aux domaines Google et Doubleclick, même si vous refusez les cookies

Publié par Pixel de Tracking le 8 janv. 2020

Chrome et la vie privée

Chrome est un excellent navigateur, mais ce n'est pas le meilleur défenseur de votre vie privée.

À la différence d'un Firefox ayant mis en place une protection renforcée contre le pistage bloquant la plupart des traqueurs ou d'un Safari améliorant son blocage des traqueurs via la fonctionnalité Intelligent Tracking Prevention Chrome n'agit pas beaucoup. Si Chrome va bloquer certains cookies à partir de la version 80 (explications de l'attribut SameSite des cookies, et comment Chrome va changer sa manière de les traiter ici), il suffira aux publicitaires de marquer leurs cookies avec l'attribut SameSite=None pour que rien ne change.

En réalisant mes tests pour l'article sur la désanonymisation des données de surf récoltées par Doubleclick, je me suis rendu compte d'un autre problème : Chrome envoyait systématiquement à Google et à Doubleclick le même entête HTTP custom, nommé x-client-data.

Le test

Nous allons observer cet entête custom envoyé par Chrome uniquement aux domaines Doubleclick (service publicitaire de Google) et Google. Regardons d'abord Doubleclick, service utilisé par lemonde.fr

  • Désactivez votre adblocker
  • Supprimez les cookies sur Chrome (Paramètres > Paramètres avancés > Effacer les données de navigation), ainsi vous êtes déconnecté de votre compte Google
  • Puis allez sur lemonde.fr
  • Ouvrez la console Chrome (⌘+Option+J sur Mac, Ctrl, Shift et J sur PC)
  • Allez sur l'onglet "Network" et filtrez les résultats sur doubleclick
  • Scrollez sur la page (lemonde.fr considère que le scroll vaut acceptation des cookies, et déclenche ensuite le tracking publicitaire)
  • Dans l'onglet "Network" de la console, cliquez sur une requête adressée à doubleclick et regardez les "Request headers"

x-client-data doubleclick

Vous voyez apparaître un header propre à Chrome, envoyé au domaine Doubleclick : x-client-data.

La 2ème étape du test est la suivante :

  • Allez sur google.fr
  • Ouvrez la console Chrome (⌘+Option+J sur Mac, Ctrl, Shift et J sur PC)
  • Allez sur l'onglet "Network" et filtrez les résultats sur google.fr
  • Rafraîchissez la page puis dans l'onglet "Network" de la console, cliquez sur une requête adressée à google et regardez les "Request headers"

x-client-data google

Vous voyez toujours le même header : x-client-data, renseigné avec la même valeur. Via Chrome, Google peut ainsi vous pister sur tous les domaines utilisant des services Google ou Doubleclick (une bonne partie du web), même si vous bloquez les cookies.

Quel est le but de l'entête x-client-data ?

Suite à cette découverte, j'ai essayé d'en savoir plus sur le web. ll s'avère que cet entête n'a reçu que peu de publicité, aucun article en français et seulement 2 articles en anglais :

Vincent Toubiana signale le whitepaper de Chrome comme seule source d'information provenant de Google, voici donc les informations officielles sur cet entête :

We want to build features that users want, so a subset of users may get a sneak peek at new functionality being tested before it’s launched to the world at large. A list of field trials that are currently active on your installation of Chrome will be included in all requests sent to Google. This Chrome-Variations header (X-Client-Data) will not contain any personally identifiable information, and will only describe the state of the installation of Chrome itself, including active variations, as well as server-side experiments that may affect the installation.

The variations active for a given installation are determined by a seed number which is randomly selected on first run. If usage statistics and crash reports are disabled, this number is chosen between 0 and 7999 (13 bits of entropy). If you would like to reset your variations seed, run Chrome with the command line flag “--reset-variation-state”. Experiments may be further limited by country (determined by your IP address), operating system, Chrome version and other parameters.

Ainsi ce header est bien envoyé dans toutes les requêtes vers Google, il est utilisé en A/B test, mais aussi pour des statistiques d'usage de Chrome. Là encore, il vous faudra faire confiance à Google sur le fait qu'il n'utilise pas votre entête pour mieux vous pister.

Pouvez-vous y échapper?

De manière assez simple, vous pouvez ne pas utiliser Chrome et vous tourner vers un navigateur plus respectueux de la vie privée tel que Firefox, Safari ou Brave. Si vous utilisez Chrome, ce header n'est pas envoyé lorsque vous êtes en mode Incognito, vous pouvez aussi désactiver l'envoi des statistiques d'utilisation et les rapports d'erreur à Chrome afin de faire diminuer l'entropie de l'entête.