1 points par GN⁺ 2026-05-02 | 1 commentaires | Partager sur WhatsApp
  • LinkedIn envoie, dans Chrome, des requêtes vers des URL chrome-extension:// afin de vérifier si certaines extensions sont installées ; pour celles qui ne le sont pas, l’échec de la requête apparaît comme une erreur dans la console des outils de développement
  • Comme LinkedIn possède déjà le nom, l’employeur, l’intitulé de poste, l’expérience et la localisation des utilisateurs, ce scan d’extensions n’ajoute pas une empreinte d’appareil anonyme, mais une liste de logiciels à une identité professionnelle vérifiée
  • D’après les relevés de browsergate.eu et le dépôt de suivi sur GitHub, le scan est en place au moins depuis 2017, et la liste ciblée est passée de 38 à 6 278 éléments en avril 2026
  • Le scan fait partie du système de collecte d’empreinte d’appareil APFC de LinkedIn, qui construit un profil à partir de 48 caractéristiques du navigateur et de l’appareil, dont l’empreinte canvas, WebGL, le comportement audio, les polices, les informations d’écran, la mémoire de l’appareil et l’IP locale via WebRTC
  • Les résultats de détection sont empaquetés dans AedEvent et SpectroscopyEvent, chiffrés avec une clé publique RSA puis envoyés au point de terminaison li/track de LinkedIn ; browsergate.eu estime que cette méthode constitue une violation du Digital Markets Act de l’UE et indique qu’une enquête pénale a été ouverte

Une liste de logiciels rattachée à un profil nominatif

  • La collecte d’empreinte classique est généralement présentée comme un moyen de reconnaître à nouveau le navigateur d’un visiteur anonyme sans cookies
  • Dans ce cas, le profil peut être identifié au niveau de l’appareil, sans être nécessairement relié à une identité personnelle
  • LinkedIn, lui, détient déjà le nom, l’employeur, l’intitulé du poste, l’expérience, la fourchette salariale, le réseau professionnel et la localisation de l’utilisateur
  • Le scan d’extensions de LinkedIn ne sert donc pas à créer le profil d’un visiteur inconnu, mais à ajouter une liste détaillée de logiciels à une identité professionnelle déjà vérifiée
  • La liste scannée par LinkedIn inclut des centaines d’extensions liées à la recherche d’emploi, ce qui peut permettre de savoir discrètement si un utilisateur cherche un nouveau poste avant qu’il n’en informe son employeur
  • Des extensions liées aux contenus politiques, aux pratiques religieuses, à l’assistance au handicap ou à la neurodiversité figurent aussi dans la liste, ce qui signifie que les logiciels installés dans le navigateur peuvent servir de base pour déduire des éléments de la vie privée
  • Comme LinkedIn connaît le lieu de travail de l’utilisateur, le résultat du scan d’un salarié peut contribuer à identifier non seulement cette personne, mais aussi les outils internes de l’organisation, ses produits de sécurité, ses abonnements concurrents et ses workflows
  • La privacy policy de LinkedIn ne mentionne pas ce scan d’extensions, et les utilisateurs ne sont ni informés ni invités à donner leur consentement

Un problème qui dépasse LinkedIn

  • Application des règles et précédent

    • LinkedIn utilise la liste d’extensions pour tirer des conclusions sur les utilisateurs ayant installé certaines extensions et prendre des mesures de modération ou d’application des règles
    • Selon browsergate, Milinda Lakkam a confirmé sous serment : “LinkedIn took action against users who had specific extensions installed.”
    • Les utilisateurs n’ont aucun moyen de savoir que leurs logiciels sont répertoriés, que cette liste est utilisée contre eux, ni que cela n’apparaît pas dans la politique de confidentialité de LinkedIn
  • L’écosystème de la collecte d’empreinte

    • La collecte d’empreinte du navigateur est généralement décrite comme le fait qu’un site collecte des signaux, crée un profil et reconnaît un utilisateur d’une session à l’autre
    • Le scan d’extensions de LinkedIn produit une liste détaillée de logiciels reliée à une identité vérifiée, et ce profil n’a pas besoin de rester à l’intérieur de LinkedIn
    • Si LinkedIn achète des jeux de données comportementales à des tiers et que l’empreinte de l’utilisateur s’y trouve, LinkedIn peut l’ajouter aux informations utilisateur qu’il possède déjà
    • Le comportement de navigation hors de LinkedIn, l’historique d’achats, les schémas de localisation et les centres d’intérêt peuvent ainsi devenir une partie du profil relié au compte LinkedIn
    • À l’inverse, LinkedIn intègre aussi des scripts tiers, notamment Google reCAPTCHA Enterprise chargé sur toutes les pages visitées, ce qui fait circuler des données entre plateformes
    • L’empreinte que LinkedIn relie à une identité vérifiée peut donc aussi avoir un impact sur les systèmes publicitaires et de suivi en dehors de linkedin.com
    • Une seule connexion à LinkedIn peut suffire pour que l’empreinte créée lors de cette visite suive ensuite l’utilisateur sur l’ensemble du Web
  • Les profils d’utilisateurs réellement exposés

    • Pour les journalistes, avocats, chercheurs et enquêteurs en droits humains, le profil LinkedIn peut constituer l’un des documents d’identité vérifiée les plus détaillés en ligne
    • Un profil LinkedIn est construit délibérément, sous nom réel, à des fins professionnelles
    • Le scan d’extensions y rattache, à l’insu de l’utilisateur, l’installation d’outils de confidentialité, d’extensions de sécurité, d’outils d’enquête et d’applications de productivité
    • Si vous utilisez LinkedIn et Chrome, cette collecte a lieu actuellement

APFC et la collecte d’empreinte JavaScript avancée

  • Le scan d’extensions n’est pas une fonction isolée, mais une partie d’un système plus large de collecte d’empreinte d’appareil que LinkedIn appelle en interne APFC
  • APFC signifie Anti-fraud Platform Features Collection et est aussi appelé en interne DNA, pour Device Network Analysis
  • LinkedIn est plus transparent sur ces méthodes de suivi que sur le scan d’extensions, mais ces techniques sont courantes sur les sites commerciaux
  • Ce système collecte 48 caractéristiques du navigateur et de l’appareil à chaque visite
  • Les éléments collectés incluent l’empreinte canvas, le renderer et les paramètres WebGL, le comportement du traitement audio, les polices installées, la résolution d’écran, le ratio de pixels, la concurrence matérielle, la mémoire de l’appareil, le niveau de batterie, l’adresse IP locale via WebRTC, le fuseau horaire et la langue
  • Le scan d’extensions n’est qu’une des entrées utilisées pour constituer un profil plus large

Ce qui se passe techniquement

  • Le code de LinkedIn envoie des requêtes fetch() vers des URL chrome-extension:// pour rechercher certains fichiers dans les extensions installées sur Chrome
  • Si l’extension n’est pas installée, Chrome bloque la requête et consigne l’échec
  • Si l’extension est installée, la requête réussit silencieusement et LinkedIn l’enregistre
  • Dans un environnement observé, le scan s’est exécuté pendant environ 15 minutes et a recherché plus de 6 000 extensions
  • Les utilisateurs peuvent le constater eux-mêmes en ouvrant LinkedIn dans Chrome puis l’onglet Console des outils de développement
  • Chaque erreur rouge dans la console correspond à une partie de l’empreinte de l’utilisateur

Structure du code et méthode de détection

  • LinkedIn exécute du code JavaScript dans le navigateur de tous les visiteurs Chrome, et le système chargé du scan d’extensions s’y trouve
  • Le fichier concerné est un fichier JavaScript minifié et partiellement obfusqué d’environ 1,6 Mo
  • La minification consiste généralement à compresser le code pour des raisons de performance, tandis que l’obfuscation est une étape distincte visant à le rendre difficile à lire et à comprendre
  • LinkedIn obfusque précisément le module contenant le système de scan d’extensions et le dissimule dans un fichier JavaScript de plusieurs milliers de lignes
  • Le fichier contient un tableau codé en dur d’identifiants d’extensions de navigateur
  • En février 2026, ce tableau comptait 6 278 entrées
  • Chaque entrée comporte deux champs : l’identifiant de l’extension dans le Chrome Web Store et le chemin d’un fichier spécifique à l’intérieur du package de l’extension
  • Le chemin du fichier n’est pas arbitraire : une extension Chrome peut exposer des fichiers internes à une page web via le champ web_accessible_resources, ce qui le rend nécessaire
  • Si l’extension est installée et a déclaré ce fichier comme accessible, une requête fetch() vers chrome-extension://{id}/{file} réussit
  • Si elle n’est pas installée, Chrome bloque la requête
  • LinkedIn identifie et détecte directement un fichier accessible spécifique pour chacune des 6 278 extensions de la liste
  • La liste continue d’être maintenue et enrichie, et il semble qu’un outil ait existé pour crawler les packages d’extensions du Chrome Web Store et parser les ressources accessibles via le web dans chaque manifeste afin d’ajouter de nouvelles cibles de détection

Deux modes de scan et Spectroscopy

  • Le scan d’extensions fonctionne selon deux modes
  • Le premier mode utilise Promise.allSettled() pour envoyer toutes les requêtes simultanément et détecter l’ensemble des extensions en parallèle
  • Le second envoie les requêtes de manière séquentielle avec un délai configurable entre chacune, répartissant l’activité réseau dans le temps pour qu’elle soit moins visible par les outils de monitoring
  • LinkedIn peut basculer entre ces deux modes via des feature flags internes
  • Le scan peut aussi être différé avec requestIdleCallback, de manière à s’exécuter lorsque le navigateur est inactif, afin que l’utilisateur ne perçoive pas d’impact sur les performances
  • Un second système de détection appelé Spectroscopy fonctionne indépendamment de la liste d’extensions
  • Spectroscopy parcourt l’ensemble de l’arbre DOM et inspecte tous les nœuds de texte ainsi que les attributs des éléments à la recherche de références à des URL chrome-extension://
  • Cette méthode permet de repérer des extensions qui modifient la page, même si elles ne figurent pas dans la liste codée en dur de LinkedIn
  • Ensemble, ces deux systèmes couvrent à la fois les extensions installées et celles qui interagissent réellement avec la page

Envoi de la télémétrie

  • Les deux systèmes de détection envoient leurs résultats dans la même pipeline de télémétrie
  • Les identifiants d’extensions détectés sont empaquetés dans des objets AedEvent et SpectroscopyEvent
  • Ces objets sont chiffrés avec une clé publique RSA puis envoyés au point de terminaison li/track de LinkedIn
  • L’empreinte chiffrée est ensuite injectée dans les en-têtes HTTP de toutes les requêtes API émises au cours de la session
  • LinkedIn reçoit ainsi cette valeur en même temps que chaque action effectuée par l’utilisateur pendant la visite

Contexte juridique

  • browsergate.eu détaille longuement le raisonnement juridique associé
  • En 2024, Microsoft a été désigné comme gatekeeper au titre du Digital Markets Act de l’UE, et LinkedIn fait partie des produits concernés par cette régulation
  • Le DMA impose aux gatekeepers d’autoriser l’accès des outils tiers aux données des utilisateurs et interdit de prendre des mesures à l’encontre des utilisateurs de ces outils
  • browsergate.eu estime que le fait pour LinkedIn de cibler systématiquement les utilisateurs d’outils tiers et d’utiliser pour cela un scan d’extensions clandestin constitue une violation de ces règles
  • La recevabilité juridique de cette thèse relève toutefois de l’appréciation des autorités et des tribunaux
  • La Cybercrime Unit du Bavarian Central Cybercrime Prosecution Office in Bamberg a confirmé qu’une enquête pénale avait été ouverte
  • Cette autorité traite les affaires graves de cybercriminalité impliquant plusieurs juridictions
  • browsergate.eu indique avoir confirmé l’existence de l’enquête pénale, fourni le numéro de dossier et préparer la publication complète des documents judiciaires

1 commentaires

 
GN⁺ 2026-05-02
Réactions sur Hacker News
  • « Il ne fait aucun doute qu’une enquête pénale a commencé. » Bien. Ces entreprises méritent d’être lapidées, et même pire

    • Ce qu’il faut vraiment, c’est établir à qui cette idée est venue au départ
      Toute équipe qui ne veut pas dégrader son site au point de le rendre médiocre devrait pouvoir filtrer les candidats à partir d’une liste connue de promoteurs de l’enshittification
      Il est peut-être déjà trop tard pour couper le mal à la racine, mais il n’y a aucune raison de laisser ces personnes continuer sans la moindre contrainte et prendre encore plus d’ampleur
  • « Puis j’ai vu l’affaire browsergate exploser sur mastodon et je me suis dit “impossible”, mais en fait une procédure était bien en préparation. » - un-nf
    Farrell v LinkedIn Corporation 4:26-cv-02953-KAW (N.D. Cal. Apr. 6, 2026)
    https://ia601503.us.archive.org/33/items/gov.uscourts.cand.4...

  • Pourquoi est-ce que Chrome révèle à n’importe quel site la liste des extensions que j’ai installées ?

    • Techniquement, il ne la révèle pas telle quelle. Le site construit une liste d’ID d’extensions et de fichiers connus comme étant présents dans ces extensions, puis parcourt chaque paire en essayant de charger le fichier
      S’il n’y a pas d’erreur, cela permet de savoir que l’extension est installée. C’est astucieux et laborieux, mais cela contourne des protections de sécurité censées empêcher précisément ce genre de chose
      D’après ce que j’ai lu, ils font ça pour bloquer les utilisateurs d’extensions de scraping connues qui permettent de contourner leurs conditions d’utilisation, mais je ne trouve pas ça totalement convaincant
    • Le passage concerné dans le texte original est celui-ci :
      « Les extensions Chrome peuvent exposer des fichiers internes aux pages web via le champ web_accessible_resources du manifest.json. Si l’extension est installée et expose la ressource, une requête fetch() vers chrome-extension://{id}/{file} réussit. Si elle n’est pas installée, Chrome bloque la requête et la promise est rejetée.
      LinkedIn teste ainsi toutes les extensions de sa liste. »
    • On pourrait poser la même question à propos des terribles erreurs de sécurité que les navigateurs web accumulent depuis des décennies
    • Cette information est vraiment fournie au site ? Je pensais plutôt qu’il s’agissait d’un nouveau hack consistant à détecter soi-même un comportement qui n’apparaît que lorsqu’une extension précise est installée
      Mais faire ça pour 6 300 extensions représenterait énormément de travail. Est-ce qu’il existe des services qui proposent ça ?
    • Brave bloque explicitement cela
  • Sérieusement, si on vous demandait d’implémenter ça au travail, vous feriez quoi : vous opposer et risquer de perdre votre poste, ou obéir et le garder ?
    En tant que praticiens, où faut-il tracer la ligne entre télémétrie et surveillance ?

    • Je choisirais de ne pas travailler chez LinkedIn, Meta, ni dans des entreprises financées par de l’argent saoudien ou israélien. Chercher un emploi devient un peu plus difficile, mais on dort mieux la nuit
    • Il existe une troisième option : accepter en apparence, puis échouer volontairement ou faire traîner le sujet indéfiniment. Il est difficile de prouver qu’on a saboté le travail exprès
      Cela dit, si vous en êtes à ce genre de jeu, il est peut-être temps de chercher un autre poste ;)
    • À mon avis, avertir anonymement le public de ce qui va se passer est aussi une option. Vous gardez ainsi votre emploi tout en permettant au moins aux gens d’être informés
      Cela dit, si seules trois personnes environ sont au courant, on vous identifiera tout de suite
    • Je pense pareil. Il est possible que cela ait été conçu par des gens qui ne peuvent pas facilement trouver un autre job et qui ont besoin de ce travail pour l’assurance santé ou pour des raisons financières. Ils vivent peut-être à peine avec leur salaire
      Il est aussi possible qu’ils reçoivent ces consignes de managers dans une situation similaire, eux-mêmes sous des supérieurs qui ne regardent que la hausse du chiffre d’affaires sans se soucier des moyens. Malgré tout, on a l’impression qu’à un moment quelqu’un devrait dire : « qu’est-ce qu’on est en train de faire, au juste ? », c’est étrange
      Pour répondre à la question, bien sûr que je m’y opposerais. J’ai simplement la chance, en ce moment, de pouvoir faire ce choix sans conséquences graves. Mais qui viendrait sur HN dire : « oui, je n’ai aucun sens moral ! » ? Même avec un compte jetable, on ne saurait pas si c’est sincère
    • Honnêtement, moi je pense que je l’implémenterais. C’est la responsabilité de Chrome si n’importe quel site peut voir les extensions installées. Et de toute façon, ça ne porte pas vraiment préjudice à l’utilisateur
  • Le passage le plus pertinent que j’ai trouvé dans l’original est celui-ci :
    « Les extensions Chrome peuvent exposer des fichiers internes aux pages web via le champ web_accessible_resources du manifest.json. Si l’extension est installée et expose la ressource, une requête fetch() vers chrome-extension://{id}/{file} réussit. Si elle n’est pas installée, Chrome bloque la requête et la promise est rejetée.
    LinkedIn teste ainsi toutes les extensions de sa liste. »

    • Dans ce cas, pourrait-on créer de fausses extensions installées qui répondraient aléatoirement oui/non à ce genre de requêtes ? Il semble assez clair de voir quels fichiers LinkedIn ou d’autres sites de fingerprinting testent, et comme le dit l’auteur du billet d’origine, on peut l’observer
      Il serait aussi intéressant de voir quels autres sites testent les mêmes fichiers ; est-ce que quelqu’un s’est déjà penché là-dessus ?
    • Il ne devrait pas être possible qu’un code venant d’un site, et non d’une extension, puisse y accéder
  • C’est une pratique assez standard dans le fingerprinting d’appareil. LinkedIn s’en sert probablement pour protéger la plateforme contre le scraping, entre autres, et la liste des extensions possède suffisamment d’entropie pour identifier un utilisateur et constituer un élément utile de son empreinte

    • Il est déjà assez facile de créer et d’utiliser en une seule fois des extensions qui aident au scraping, et LinkedIn ne peut pas faire grand-chose contre ça
      J’ai vu des gens créer et installer en quelques jours des extensions Chrome locales, puis injecter une IA dans les outils de développement pour pouvoir scraper à peu près n’importe quel site. C’était déjà le cas il y a quelques mois
      Je ne pense pas qu’il existe désormais un moyen simple de se défendre contre ça. Ce type de mesures de programmation défensive ne sera utile que pendant un temps limité
  • Est-ce que c’est une hallucination ? Je ne retrouve cette citation nulle part ailleurs
    « Selon browsergate, Milinda Lakkam a confirmé sous serment que “LinkedIn a pris des mesures à l’encontre d’utilisateurs ayant certaines extensions installées”. »

    • C’est vrai dans une certaine mesure, mais ce n’est pas une citation littérale. Je ne suis pas remonté plus loin que ce lien :
      https://browsergate.eu/the-evidence-pack/
      Le système de LinkedIn « a pu prendre des mesures contre des utilisateurs de LinkedIn chez qui [XXXXXX] était installé ».
      Édition : sympa ! Je viens de voir que le texte en retrait revient désormais à la ligne aussi sur navigateur mobile, du moins sur ffm. Je me demande quand cela a été corrigé
  • Pour être juste, la politique de confidentialité de LinkedIn indique bien qu’ils collectent cette information. Voir https://www.linkedin.com/legal/privacy-policy?ref=cms.hondas...
    « 1.5 Appareil et localisation
    Lorsque vous visitez ou quittez nos services (y compris certains plugins et nos cookies ou technologies similaires sur des sites tiers), nous recevons l’URL du site d’où vous venez ainsi que celle du site vers lequel vous allez, ainsi que l’heure de votre visite. Nous recevons aussi des informations sur votre réseau et votre appareil (par exemple votre adresse IP, serveur proxy, système d’exploitation, navigateur web et modules complémentaires, identifiants et fonctionnalités de l’appareil, identifiants de cookies et/ou votre FAI ou opérateur mobile). Si vous utilisez nos services depuis un appareil mobile, cet appareil nous envoie des données de localisation selon les réglages de votre téléphone. Nous vous demandons votre consentement avant d’utiliser le GPS ou d’autres outils pour identifier votre position précise. »
    La partie pertinente ici, c’est « y compris certains plugins »

  • J’ai supprimé mon compte LinkedIn, et ma vie va mieux depuis

    • C’est facile à dire quand on a déjà un emploi. Chercher du travail sans compte LinkedIn, ce n’est pas si simple