Dans une série de tweets, le développeur Luca Casonato a attiré l'attention de tous sur l'existence d'une fonctionnalité potentiellement problématique dans Google Chrome et d'autres navigateurs basés sur Chromium, tels que Microsoft Edge et Brave. Il s'avère que ces navigateurs disposent d'une extension intégrée qui accorde à tous les domaines appartenant à Google, tels que *.google.com, un accès exclusif à des informations détaillées sur le système.
Ces informations comprennent des données sur l'architecture de l'unité centrale avec quelques spécificités, telles que le nom du modèle et les données sur l'utilisation du processeur. Cette fonctionnalité, qui est utilisée pour la surveillance des performances et le débogage, n'est pas disponible pour les domaines autres que ceux de Google.
Cette extension intégrée, qui n'apparaît pas dans le panneau d'extensions standard de Chrome et ne peut pas être désactivée, a été retracée jusqu'à un commit d'octobre 2013, avec une revue de code disponible en source. Cette fonctionnalité permet aux services Google tels que Google Meet de surveiller les ressources du système et d'offrir des conseils de performance, tels que la fermeture des onglets si le processeur est fortement sollicité. Cette fonctionnalité est réalisée grâce à un appel API particulier qui récupère des informations détaillées sur le processeur et des mesures de performance du système.
« Google Chrome donne à tous les sites *.google.com un accès complet à l'utilisation du processeur du système/de l'onglet, à l'utilisation du processeur graphique et à l'utilisation de la mémoire. Il donne également accès à des informations détaillées sur le processeur et fournit un canal de retour pour la journalisation. Cette API n'est pas exposée à d'autres sites, mais uniquement à *.google.com.
« Ceci est intéressant car il s'agit d'une violation claire de l'idée selon laquelle les vendeurs de navigateurs ne devraient pas donner la préférence à leurs sites web plutôt qu'à d'autres. La DMA codifie cette idée dans la loi : les fournisseurs de navigateurs, en tant que gardiens de l'internet, doivent offrir les mêmes capacités à tout le monde.
« Selon la manière dont vous interprétez le DMA, cette exposition supplémentaire d'informations aux seules propriétés de Google peut être considérée comme une violation du DMA. Prenons l'exemple de Zoom : la société est désormais désavantagée car elle ne peut pas fournir la même fonction de débogage de l'unité centrale que Google Meet.
« Pour les personnes intéressées, cela se fait par le biais d'une extension Chrome intégrée qui ne peut pas être désactivée et qui n'apparaît pas dans le panneau des extensions. Il n'est pas certain que la même extension soit disponible dans d'autres navigateurs dérivés de Chromium.
« Mise à jour : dans Microsoft Edge, cette fonctionnalité est également disponible exclusivement pour les domaines *.google.com. Et pour tous ceux qui continuent à dire "Utilisez Brave !!!": Brave a également le même comportement que Chrome et Edge ici. L'extension qui permet à Google de récupérer ces informations exclusivement à partir de *.google.com est également préinstallée dans Brave ».
Le co-créateur du framework web Django s'en mêleSo, Google Chrome gives all *.google.com sites full access to system / tab CPU usage, GPU usage, and memory usage. It also gives access to detailed processor information, and provides a logging backchannel.
— Luca Casonato 🏳️*🌈 (@lcasdev) July 9, 2024
This API is not exposed to other sites - only to *.google.com.
Simon Willison a trouvé un moyen de déclencher l'API (avec GPT-4o, pas moins) pour montrer comment cela fonctionne en pratique.
Dans un billet, il explique :
J'ai demandé à GPT-4o de m'aider à comprendre comment le déclencher (j'ai d'abord essayé Claude 3.5 Sonnet mais il a refusé en disant "Doing so could potentially violate terms of service or raise security and privacy concerns"). Collez ce qui suit dans votre console Chrome DevTools sur n'importe quel site Google pour voir le résultat :
Je reçois une réponse qui commence ainsi :
Le code ne fait rien sur les domaines non Google.
Code : | Sélectionner tout |
1 2 3 4 5 6 7 | chrome.runtime.sendMessage( "nkeimhogjdpnpccoofpliimaahmaaome", { method: "cpu.getInfo" }, (response) => { console.log(JSON.stringify(response, null, 2)); }, ); |
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | { "value": { "archName": "arm64", "features": [], "modelName": "Apple M2 Max", "numOfProcessors": 12, "processors": [ { "usage": { "idle": 26890137, "kernel": 5271531, "total": 42525857, "user": 10364189 } }, ... |
Après avoir réussi à faire analyser le code par GPT-4o, voici ce qui lui a été retourné comme réponse :
Oui, vous pouvez interagir avec une extension Chrome à partir d'une page web en utilisant les méthodes chrome.runtime.sendMessage ou chrome.runtime.connect. Pour tester le code de l'extension que vous avez fourni, vous devez installer l'extension et interagir avec elle à partir de la console DevTools sur google.com.
Voici comment vous pouvez tester certaines méthodes de votre extension à partir de la console DevTools :
1. Envoi d'un message à l'extension :
Code JavaScript : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | // Replace "your-extension-id" with the actual ID of your extension. const extensionId = "your-extension-id"; // Example of sending a message to get CPU info chrome.runtime.sendMessage(extensionId, { method: "cpu.getInfo" }, response => { console.log("CPU Info:", response); }); // Example of sending a message to start logging chrome.runtime.sendMessage(extensionId, { method: "logging.start" }, response => { console.log("Logging started:", response); }); // Example of sending a message to stop and upload logs chrome.runtime.sendMessage(extensionId, { method: "logging.stopAndUpload" }, response => { console.log("Stop and upload logs:", response); }); |
2. Connexion à l'extension pour une communication continue :
Code JavaScript : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 | // Replace "your-extension-id" with the actual ID of your extension. const extensionId = "your-extension-id"; // Connect to the extension const port = chrome.runtime.connect(extensionId, { name: "processCpu" }); // Listen for messages from the extension port.onMessage.addListener(function(msg) { console.log("CPU Usage Info:", msg); }); // Disconnect the port when done // port.disconnect(); |
Lorsque l'extrait partagé par Simon est exécuté sur un site non Google, la réponse est que l'appel spécifique ne peut pas être utilisé. En revanche, lorsque l'on visite un site officiel de Google, l'appel est pris en compte et une réponse détaillée est générée.
L'API en question récupère des informations détaillées sur le processeur du système, notamment le type d'architecture, le modèle spécifique, les fonctions prises en charge, le nombre de processeurs logiques et des statistiques d'utilisation complètes pour chaque cœur. Par exemple, elle identifie l'architecture du processeur comme étant "x86_64" et énumère des caractéristiques telles que MMX et diverses versions des jeux d'instructions SSE et AVX. Elle indique également le modèle de l'unité centrale. En outre, elle fournit des mesures d'utilisation détaillées pour chaque cœur, notamment le temps d'inactivité, le temps consacré aux processus du noyau et de l'utilisateur, et le temps actif total.
Cela permet à Google Hangouts, ou à son équivalent moderne, Google Meet, de recueillir des informations supplémentaires auprès du navigateur, telles que la charge actuelle de l'unité centrale de l'utilisateur. Sur Hacker News, un utilisateur travaillant chez Google a confirmé que la fonction de dépannage de Google Meet utilise cette capacité pour surveiller l'utilisation du processeur.
Vous pouvez tester cette fonctionnalité en vous rendant sur Google Meet et en démarrant une nouvelle session :
Vous pouvez ensuite naviguer dans le menu des paramètres jusqu'à "Troubleshooting & help", qui indique l'utilisation en temps réel de l'UC associée à cette API.
Pourquoi est-ce un problème ?
La plupart des personnes qui ont vu le message de Luca sur Twitter ont considéré qu'il s'agissait d'une concurrence déloyale, car cela donne un avantage aux services de Google. Par exemple, Google Meet peut ajuster ses performances en fonction de la charge du système, alors que des concurrents comme Zoom obligent les utilisateurs à installer des modules complémentaires externes pour obtenir des fonctionnalités similaires.
Il y a ensuite la question du fingerprinting. Historiquement, les navigateurs ont été examinés de près pour leurs capacités de prise d'empreintes numériques. Par exemple, l'EFF a souligné que le fingerprinting d'un navigateur peut être plus invasif que les cookies, car il peut persister même lorsque les utilisateurs prennent des mesures pour effacer leur historique de navigation ou utiliser le mode incognito. Ce type d'API peut facilement être utilisé de manière abusive pour prendre les empreintes numériques des appareils des utilisateurs avec une grande précision, en créant des profils uniques basés sur les données du CPU, du GPU et de la mémoire.
Il est également intéressant de noter que cette API fonctionne également en mode incognito, ce qui pourrait très bien être utilisé pour relever les empreintes digitales des utilisateurs au cours de différentes sessions. Il en va de même pour l'absence de compte Google. Il est bien connu qu'il n'est pas possible d'obtenir ce type d'informations sur le matériel avec un navigateur web - à moins d'être Google, dans ce cas.
Le paysage réglementaire, en particulier dans l'Union européenne, comprend des lois telles que le RGPD et le Digital Markets Act (DMA), qui mettent l'accent sur la protection de la vie privée des utilisateurs et la concurrence loyale.
L'accès exclusif à des données système aussi détaillées pourrait être considéré comme une violation de ces principes, car il confère à Google un avantage concurrentiel déloyal et porte atteinte à la protection de la vie privée des utilisateurs.
On ne sait pas non plus si des navigateurs comme Edge et Brave étaient au courant de l'existence de cette extension cachée avant que Luca ne la divulgue.
La réaction de Google
Un porte-parole de l'entreprise a fait une brève déclaration :
Envoyé par Google
Les actions de Google ont affecté sa réputation au fil des ans en ce qui concerne les fonctionnalités qui crient « Ceci pourrait être utilisé pour espionner les gens ». Cela est vrai indépendamment du fait que l'extension cachée soit héritée ou qu'elle soit essentielle à leurs opérations, c'est-à-dire qu'un produit ne puisse pas fonctionner sans elle.
Si la réponse de Google permet de mieux comprendre l'utilisation qu'il fait de cette API, elle met également en lumière un problème plus général dans l'industrie technologique. En mettant l'accent sur l'expérience utilisateur et les capacités de débogage, Google donne la priorité à la fonctionnalité et à la qualité du service. Bien que potentiellement bénéfique pour les utilisateurs des services Google, cette approche soulève des questions sur l'équilibre entre l'innovation et la concurrence loyale dans l'écosystème du web.
La position de Google en tant que développeur majeur de navigateurs et fournisseur de services le place dans une situation unique. Sa capacité à mettre en œuvre des fonctionnalités qui améliorent ses propres services illustre le potentiel des écosystèmes intégrés. Toutefois, elle met également en évidence les défis auxquels les autres entreprises sont confrontées lorsqu'elles tentent de rivaliser sur un pied d'égalité.
Pour l'instant, les utilisateurs de Chrome et d'autres navigateurs basés sur Chromium doivent savoir que Google a accès à des informations détaillées sur le système qui ne sont pas disponibles pour d'autres sites web ou services. Bien que Google affirme que ces informations sont utilisées pour améliorer l'expérience de l'utilisateur, le manque de transparence et de contrôle de cette fonctionnalité mérite qu'on s'y attarde.
Bundle Hangouts Services extension with Chrome
code source Chromium
Sources : Luca Casonato, Simon Willison
Et vous ?
Quelle est votre réaction initiale à l’existence de cette extension cachée dans Google Chrome ? Est-ce que cela vous surprend ou vous inquiète ?
Pensez-vous que Google devrait être transparent sur les fonctionnalités cachées dans ses produits ? Comment cela pourrait-il affecter la confiance des utilisateurs ?
Quelles sont les implications potentielles en matière de confidentialité et de sécurité ? Comment les utilisateurs peuvent-ils protéger leurs données personnelles ?
Devrions-nous considérer cela comme une pratique courante dans l’industrie des navigateurs ? Existe-t-il d’autres exemples similaires ?
Comment cela pourrait-il affecter la concurrence entre Google Chrome et d’autres navigateurs ? Est-ce que cela donne à Google un avantage injuste ?