Les fonctionnalités de confidentialité des navigateurs traitent l'identité comme un état du navigateur : les cookies, les empreintes canvas et les empreintes audio sont effacés, randomisés ou bloqués par le mode navigation privée, un VPN ou Tor, si bien que changer de navigateur ressemble à un nouveau départ. Les chercheurs de FingerprintJS se sont attaqués au signal qui subsiste : les applications installées sur une machine ne changent pas lorsqu'une personne change de navigateur ou se cache derrière un VPN, l'ensemble des applications peut donc relier la même personne entre Chrome, Firefox, Safari et Tor sur cet ordinateur.

Le deep linking est le canal. Les navigateurs de bureau confient les schémas d'URL personnalisés tels que skype:// à l'application installée qui les a enregistrés, et ils demandent l'accord de l'utilisateur avant de la lancer. Une page peut donc tester la présence d'une application : naviguer vers son schéma et observer la réaction du navigateur. Sonder 32 applications populaires et combiner les réponses oui/non produit un identifiant de 32 bits en quelques secondes, sous Windows, macOS et Linux.

Chaque navigateur divulguait la même réponse par une faiblesse différente. Chrome exigeait un geste de l'utilisateur, mais une extension telle que son lecteur PDF réinitialisait l'indicateur de protection ; Firefox affichait une page d'erreur interne pour les schémas inconnus, rendant détectable la fenêtre contextuelle d'une application installée ; Safari n'avait aucune protection contre l'afflux de schémas ; et Tor, qui désactive entièrement les boîtes de dialogue de confirmation, exécutait les sondes de manière invisible dans des iframes.

La démarche relevait de la divulgation plutôt que de l'exploitation. FingerprintJS a publié la technique avec une démonstration fonctionnelle, diffusé le code source et déposé des rapports de bogues auprès des quatre éditeurs de navigateurs, en déclarant qu'elle n'utilise pas la vulnérabilité dans ses propres produits. Le Bugzilla de Mozilla a ouvert le ticket 1711084, et Tor Browser y a ensuite joint un correctif ; l'annonce sur Hacker News du 13 mai 2021 a recueilli 467 points et 200 commentaires, des lecteurs exécutant la démonstration comme test sur le terrain.

Sonder les applications installées via les boîtes de dialogue de schémas d'URL pour construire un identifiant qu'aucun mode de confidentialité ne réinitialise

Les applications installées constituent un état au niveau de l'appareil, si bien qu'un identifiant construit à partir d'elles survit à la navigation privée, aux VPN, aux changements de navigateur et à Tor d'une manière qu'aucun cookie ni empreinte canvas ne peut égaler.

Les schémas d'URL personnalisés exposent la présence d'une application sans autorisation : un navigateur ne propose de lancer un schéma que si une véritable application l'a enregistré, et JavaScript peut observer si cette proposition a eu lieu.

L'attaque n'utilisait que des fenêtres contextuelles, des iframes et des règles de même origine qui existaient déjà, de sorte que chaque grand navigateur de bureau exposait le signal sous une forme ou une autre, sans nécessiter de plugin ni d'accès au système d'exploitation.

Le choix de confidentialité de Tor consistant à désactiver les boîtes de dialogue de confirmation s'est retourné contre lui : rien n'étant visible pour l'utilisateur, les sondes s'exécutaient de manière invisible dans des iframes, transformant le navigateur le plus privé en la fuite la plus discrète.

La publication d'une démonstration et l'ouverture de rapports de bogues ont permis à des tiers de reproduire la découverte, transformant l'affirmation privée d'un éditeur en tickets suivis, en correctif de navigateur et en examen public.

Les applications installées constituent un état au niveau de l'appareil qui survit à la navigation privée, aux VPN et aux changements de navigateur ; toute différence observable dans l'interface, même la simple apparition d'une boîte de dialogue, devient un signal de traçage.

Mozilla a suivi le rapport sous le numéro de bogue 1711084 et Tor Browser y a joint un correctif développé par Matthew Finkel ; des années plus tard, le bogue était toujours ouvert. La mise à jour d'août 2022 de l'article indiquait que les entrées de suivi de Chrome et de Firefox étaient toujours ouvertes et non résolues. La démonstration et le dépôt de code source sont restés en ligne, et l'article a conservé sa mention selon laquelle FingerprintJS n'utilise pas la vulnérabilité dans ses propres produits. Le fil Hacker News du 13 mai 2021 a recueilli 467 points et 200 commentaires ; des lecteurs ont exécuté la démonstration comme test sur le terrain, certains confirmant des identifiants correspondants entre navigateurs, d'autres signalant des faux positifs.

VÉRIFIEZ LES SOURCES

Les sources

  1. Scheme flooding technique for reliable cross-browser fingerprinting Mozilla Bugzilla · bugzilla.mozilla.org
  2. Vulnerability allows cross-browser tracking in Chrome, Firefox, Safari, and Tor Hacker News · news.ycombinator.com ·