Meta : panique médiatique et procès d’intention autour de l'injection d'un JavaScript de tracking

Facebook Palm
Meta : panique médiatique et procès d’intention autour de l'injection d'un JavaScript de tracking

Un blogueur a laissé entendre, à tort, qu'un code JavaScript injecté par Meta via le navigateur maison intégré dans ses apps Instagram et Facebook permettait au réseau social de « surveiller toutes les interactions des utilisateurs ». Meta rétorque qu'il vise a contrario à respecter l’App Tracking Transparency d’Apple. Explications.

« Instagram et Facebook peuvent suivre tout ce que vous faites sur n'importe quel site Web depuis le navigateur intégré à leur application » iPhone ou Android, affirme sur son blog Felix Krause, ancien ingénieur de Google. Le tweet annonçant son billet est encore plus explicite en faisant sauter le conditionnel, ajoutant de la confusion. Or, les utilisateurs ne sont pas traqués : ils pourraient l'être, potentiellement. Néanmoins, Meta « ne le fait pas ».

Navigateur maison et injection de code JavaScript

Le fond du problème n’est pas nouveau. Plutôt que d'avoir recours aux navigateurs tiers, les applications Meta en utilisent un maison. Un risque découlant de cette pratique est l’injection de code JavaScript à la volée sur les pages visitées, un problème signalé par le même Felix Krause en 2018

Les conséquences peuvent être importantes car en utilisant cette technique, une application serait « en mesure de suivre chaque interaction avec les sites web, toutes les entrées de formulaire comme les mots de passe et les adresses, jusqu'au moindre clic ». Cela ne concerne pas que Meta, mais tous les éditeurs d’applications. Facebook aurait ouvert la boîte de Pandore en injectant du code – pcm.js –, même s’il ne traque pas, a priori, les utilisateurs, comme le reconnaît d'ailleurs Krause.

 Krause MetaKrause Meta

De la possibilité à la certitude

Le billet de blog de Felix Krause est repris par la presse tech' dans le monde entier dans des articles incomplets voir erronés. La quasi-totalité insinue en effet que Meta s'en servirait pour « traquer », « pister » ou « surveiller », « en secret », certains allant jusqu'à affirmer que « Facebook sait tout ce que vous faites ». D'autres appelant à ne plus cliquer sur des liens depuis Facebook ou Instagram.

Un emballement médiatique sensationnaliste qui intervient dans un climat tendu : la société a été largement éclaboussée par de nombreux scandales, dont celui de Cambridge Analytica. Afin de redorer son blason, elle annonce régulièrement des nouveautés, la dernière en date étant que l’historique dans Messenger serait bientôt chiffré de bout en bout pour toutes les conversations.

De son côté, Felix Krause, qui a déjà beaucoup écrit au sujet des questions de vie privée et de confidentialité sur IOS, se fait fort de rappeler que ses billets et découvertes sont repris par la presse tech' du monde entier. Et il se félicite que le problème qu'il avait identifié en 2018, et qui n'avait à l'époque guère intéressé les foules, fasse aujourd'hui la « Une » de sites communautaires comme Hacker News.

Krause Meta

Instagram/Facebook peuvent-ils lire tout ce que je fais en ligne ? Non !

Sur son blog, Krause diffuse une « FAQ pour les non-initiés » (« FAQs for non-tech readers », en VO) indiquant clairement que « Instagram ne peut lire et observer vos activités en ligne que lorsque vous ouvrez un lien ou une publicité à partir de leurs applications ». Et encore, rappelons que ce n’est qu’une possibilité. Ce n’est a priori pas le cas actuellement. Krause reconnait d’ailleurs n’avoir trouvé aucune trace de donnée récupérée par Meta.

Il propose en outre d'utiliser une option permettant d'ouvrir les liens dans Safari, de copier-coller l'URL puis l'ouvrir dans un navigateur, ou d'utiliser la version web d'Instagram et Facebook, plutôt que les applications. Bref, ne pas utiliser le navigateur intégré aux applications. 

Il invite les développeurs de sites web à rajouter ces deux lignes de code pour faire croire à Instagram et Facebook que le code de tracking est déjà installé : 

<span id="iab-pcm-sdk"></span>
<span id="iab-autofill-sdk"></span>

Ainsi que ces lignes, « pour empêcher Instagram de suivre les sélections de texte de l'utilisateur sur votre site web » :

const originalEventListener = document.addEventListener
document.addEventListener = function(a, b) {
    if (b.toString().indexOf("messageHandlers.fb_getSelection") > -1) {
        return null;
    }
    return originalEventListener.apply(this, arguments);
}

« Cela ne résoudra pas le problème réel d'Instagram qui exécute du code JavaScript sur votre site web, mais au moins aucun script JS supplémentaire ne sera injecté, et moins de données seront suivies », ajoute le chercheur. C’est un peu comme mettre un pansement sur une jambe de bois : si Meta décidait un jour d’injecter du code JavaScript pour traquer ses utilisateurs, il suffirait au réseau social d’utiliser un autre « id » pour contourner ces « protections ». 

Un code censé faire respecter la vie privée des utilisateurs d'iOS

Krause explique avoir contacté Meta via son programme de bug bounty, qui lui répondait quelques heures plus tard avoir pu reproduire le « problème », lui demandant de patienter le temps de rédiger un rapport complet. 9 semaines plus tard, faute de réponse, Krause explique avoir décidé de rendre l'affaire publique. Son ticket avec Meta a finalement été marqué comme résolu « étant donné que les points soulevés dans [la] soumission sont intentionnels et ne constituent pas un problème de confidentialité ».

Cette nouvelle panique médiatique sur fond de possible atteinte à la vie privée a finalement fait réagir Meta, qui explique que le script permet a contrario, de respecter le choix de désactivation ses règles ATT (App Tracking Transparency) de l'utilisateur, comme le relève The Guardian et le reconnaît d’ailleurs Krause lui-même.

En réponse, le directeur de la communication de Meta déplore cela dit des « affirmations [qui] déforment le fonctionnement du navigateur intégré à l'application Meta » : « Nous avons intentionnellement développé ce code pour honorer les choix des utilisateurs en matière de transparence du suivi des applications (ATT) sur nos plateformes. Nous l'avons communiqué au chercheur ».

Des explications alambiquées

Interrogé par Krause qui voulait comprendre la pertinence d'une telle injection de code JavaScript, plutôt que de permettre à Instagram et Facebook d'utiliser les navigateurs par défaut, Meta lui répond que « pcm.js est nécessaire pour respecter la décision de l'utilisateur en matière d'ATT » : 

« Le script doit être injecté pour authentifier la source et l'intégrité [...] des données reçues. L'authentification consisterait à vérifier que, lorsque les données sont reçues du navigateur In App, elles contiennent un nonce valide provenant du script injecté. SFSafariViewController ne supporte pas cela. »

Une explication qui ne semble pas complètement satisfaire Krause, qui estime que « d'autres applications, y compris WhatsApp de Meta, peuvent fonctionner parfaitement sans utiliser un navigateur personnalisé dans l'application ».

Claudio Agosti, fondateur de tracking.exposed, qui analyse et documente depuis 2016 comment les algorithmes surveillent les utilisateurs des réseaux sociaux (dont ceux de Facebook via facebook.tracking.exposed), résume la polémique de façon encore plus laconique : « Le pixel [de tracking] Facebook et ses boutons [de partage], ont toujours été comme ça. La seule nouveauté c’est qu'un ancien employé de Google le dit. »

Apple et Google pointés du doigt

Dans un article technique, à la fois beaucoup plus précis et mesuré que la majeure partie des médias qui ont crié au loup, The Register explique que Meta avait le choix entre deux kits pour son navigateur maison. Plutôt que d'utiliser SFSafariViewController – « le plus récent et le plus protecteur de la vie privée » – Meta a fait le choix de WKWebView qui est plus « personnalisable » et permet l’injection de code JavaScript.

« Les navigateurs intégrés aux applications ne devraient pas être autorisés à subvertir le choix du navigateur de l'utilisateur », explique sur Twitter l'Open Web Advocacy, un groupe d'ingénieurs logiciels qui dénonce les pratiques anticoncurrentielles et les écosystèmes propriétaires. « Apple et Google devraient faire respecter cette règle au niveau du système d'exploitation. OWA plaide pour que les utilisateurs aient le contrôle de ce qui se passe lorsqu'ils cliquent sur un lien, quelle que soit l'application ».

Alex Russell, un responsable du programme partenaire Microsoft Edge, estime lui aussi dans un autre thread sur Twitter que « le véritable scandale concernant le "navigateur" in-app de FB n'est pas le tracking supplémentaire, mais la subversion du choix du navigateur » : 

« Je suis sûr que c'est une totale coïncidence que cela ait *également* pour effet de supprimer le blocage des trackers par les vrais navigateurs. Subvertir le choix du navigateur est une érosion structurelle de la vie privée. Cela neutralise les préférences des utilisateurs, et FB le sait. [...] Facebook recourt à cette pratique parce qu'il sait que son produit est merdique, mais il veut le trafic et la réduction du tracking qui en découle. »

En réponse à l'article du Register, un internaute précise qu'il ouvre d'ailleurs toujours les liens dans Safari, précisément pour pouvoir bénéficier de l'ad-blocker qu'il y a installé, afin d'alléger et d'accélérer l'ouverture des liens, ce que ne permettent pas les navigateurs des applications Meta.

Interrogé par le Register, le porte-parole de Meta n'a pas expliqué en quoi l'injection de code JavaScript permet d'« honorer les choix [ATT] des utilisateurs alors que la simple ouverture des pages Web dans le navigateur préféré des utilisateurs ou avec l'aide du SFSafariViewController d'Apple le ferait plus efficacement ». Apple ne semble pas avoir réagi pour le moment. 

Vous n'avez pas encore de notification

Page d'accueil
Options d'affichage
Abonné
Actualités
Abonné
Des thèmes sont disponibles :
Thème de baseThème de baseThème sombreThème sombreThème yinyang clairThème yinyang clairThème yinyang sombreThème yinyang sombreThème orange mécanique clairThème orange mécanique clairThème orange mécanique sombreThème orange mécanique sombreThème rose clairThème rose clairThème rose sombreThème rose sombre

Vous n'êtes pas encore INpactien ?

Inscrivez-vous !