Beaucoup d’organismes veulent en savoir plus sur vous, ce que vous faites, ce que vous aimez, ce que vous pensez, et certains sont prêts à user de stratagèmes douteux pour essayer de récupérer le plus d’informations sur vos habitudes du quotidien.

Certains organismes proposent des produits ou services gratuitement pour pouvoir ensuite collecter, souvent discrètement, des informations sur les utilisateurs. C’est le cas de Facebook par exemple, maître en la matière, mais aussi de certains fournisseurs d’e-mails, comme cela a déjà été évoqué[1]. D’autres organismes tentent de profiter des faiblesses des navigateurs, qui sont souvent des proies privilégiées, car ils sont désormais utilisés quotidiennement et permettent d’accéder au nom des sites visités, aux informations échangées, bref, à toute la vie des internautes.

L’affichage des images contenues dans une page Internet

Lorsqu’un internaute souhaite consulter une page Internet, il saisit l’adresse du site dans son navigateur. Son navigateur va ensuite récupérer le contenu de la page en envoyant une requête au serveur du propriétaire du site. Ce serveur traite la demande et retourne la réponse au navigateur, qui peut ensuite l’afficher à l’internaute.

Une requête est générée par le client et envoyée au serveur. Une autre requête est générée par le serveur et envoyée au client en réponse.
Fonctionnement simplifié du navigateur pour afficher une page Web. © eWatchers.org

Le processus permettant d’afficher une page Internet ne s’arrêtent cependant pas là, car la réponse envoyée par le serveur ne contient pas nécessairement tous les éléments inclus dans la page. Certains éléments, comme des images, des vidéos, des polices de caractères ou des animations, peuvent être simplement mentionnés et doivent être récupérés séparément. Dans un tel cas, le navigateur récupère alors ces ressources en envoyant des requêtes supplémentaires.

Ce chargement progressif des éléments d’une page est notamment visible lorsqu’une page contient des images. La page commence à s’afficher puis les images se chargent ensuite plus ou moins rapidement en fonction de leur taille et de la rapidité de la connexion de l’internaute.

Deux copies d’écran d’une page Internet, une avant que l’image soit chargée et une autre une fois l’image chargée
Exemple de chargement initial d’une page suivi du chargement des images. © eWatchers.org

Utilisation d’une mémoire-cache pour améliorer la performance

Les navigateurs utilisent de nombreux mécanismes pour améliorer ce processus de chargement et afficher les pages le plus rapidement possible aux utilisateurs. L’un de ces mécanismes consiste à garder en mémoire le résultat d’une requête pour ne pas devoir le récupérer une seconde fois. Cela permet de gagner du temps et d’afficher le résultat plus rapidement à l’utilisateur. Cette mémoire temporaire s’appelle la « mémoire-cache » ou simplement le « cache ».

Les navigateurs utilisent beaucoup le cache pour améliorer le chargement des pages. Il a, par exemple, été utilisé lors du chargement de la page que vous lisez actuellement. Concrètement, lorsque votre navigateur a chargé la page initialement, les images contenues dans cet article ont été récupérées et vous avez potentiellement dû attendre 1 seconde avant qu’elles ne s’affichent sur votre écran. Si vous rafraîchissez la page ou retournez ultérieurement sur cette même page, le navigateur ne recherchera pas nécessairement ces images. Il va d’abord vérifier s’il possède déjà une copie de ces images en mémoire. Si c’est le cas, il les affichera directement, vous faisant gagner un temps précieux. Dans le cas contraire, vous devrez patienter le temps que les images sont récupérées.

Ce mécanisme de mise en mémoire fonctionne aussi lorsque deux sites utilisent la même image. Le navigateur va réutiliser les ressources téléchargées lors de la visite du premier site pour afficher plus rapidement le second.

Analyser le cache pour espionner l’utilisateur

Le concept du cache n’est pas nouveau et a fait ses preuves depuis très longtemps. Certaines personnes ont cependant profité de ce mécanisme censé améliorer l’expérience de l’utilisateur pour espionner l’historique de navigation des internautes.

Le principe de cette attaque est simple. Il consiste à essayer de télécharger une ressource, comme une image, qui est connue pour être uniquement présente sur une page bien précise, puis d’analyser le temps de chargement de cette image. Si le temps de chargement est significatif, cela veut dire que l’image n’est pas dans la cache et donc que l’utilisateur n’a pas visité la page en question. Au contraire, si le temps de chargement est minime, cela veut dire que l’image est dans le cache, car elle n’a pas pu être téléchargée auprès du serveur aussi rapidement, et que l’utilisateur a visité la page en question.

Pour illustrer cette attaque, imaginez qu’une personne voudrait savoir si vous avez consulté l’article que vous lisez actuellement. Tout ce qu’il aurait à faire, c’est d’attendre que vous vous rendiez sur son site et d’essayer discrètement de charger l’image principale de cet l’article. Si l’image se charge dans un temps relativement court, disons moins de 50 ms[2], il y a de fortes chances que l’image ait déjà été téléchargée par votre navigateur et qu’elle provienne du cache. L’attaquant peut donc en conclure que vous avez consulté cette page et lu l’article.

Sécurité ou rapidité

Il faut donc faire un choix : utiliser un cache et ainsi améliorer la performance et l’expérience de l’utilisateur ou ne pas l’utiliser et privilégier la sécurité de l’internaute.

Les navigateurs ont choisi que la sécurité de l’internaute était plus importante que la vitesse de chargement de la page et ont pris la décision de modifier le fonctionnement du cache. Désormais, ils ne permettront plus aux sites de récupérer les ressources depuis un cache commun. Chaque site aura son propre cache.

Cela veut dire que si vous visitez plusieurs fois la même page, les ressources comme les images seront toujours mémorisées, mais si vous visitez un autre site qui utilise cette même image, le navigateur récupèrera le contenu de cette image auprès du serveur, même si une copie de cette image a déjà été téléchargée ailleurs.

Se protéger face à ce type d’attaques

Pour profiter de cette amélioration et vous protéger, tout ce qui vous avez à faire, c’est de mettre à jour votre navigateur Internet.

Chrome a modifié[3] le comportement du cache pour ne plus permettre ce type d’attaques dans la version 85 de son navigateur sorti en octobre 2020, et Firefox a fait de même[4] dans la version 85 de son navigateur sorti en janvier 2021. Apple, lui, a détecté cette vulnérabilité et l’a corrigé[5] depuis 2013.

Les navigateurs se mettent constamment à jour pour corriger des problèmes de sécurité comme celui-ci. Il est donc conseillé d’activer les mises à jour automatiques du navigateur et d’installer les nouvelles versions dès leur sortie.

Note : un terme a été donné au mécanisme consistant à ne pas avoir un cache commun à tous : « cache partitioning », que l’on pourrait traduire par « séparation de la mémoire-cache ». Google a écrit un article technique sur le sujet (en anglais).

Notes et références

  1. Un exemple d’une application gratuite qui scanne vos e-mails est évoqué dans l’article « Amazon retire le détail des commandes de ses e-mails pour protéger ses clients ».
  2. Une seconde comporte 1000 millisecondes. 50 ms correspond donc à un vingtième de seconde.
  3. Google modifie l’accès au cache dans la version 85 de son navigateur Chrome (source : Google, octobre 2020, en anglais).
  4. Mozilla active le partionnement du cache dans la version 85 de son navigateur Firefox (source : Mozilla, en anglais).
  5. Apple met en place le partionnement du cache en 2013 dans son navigateur Safari (source : WebKit, en anglais).