Article original : I found a major flaw in Mozilla’s private browsing mode.
Par Konark Modi
Si elle n'avait pas été corrigée, cette faille aurait pu causer des ravages, mais les correctifs rapides de Mozilla ont sauvé la situation.
Dans cet article, je vais discuter des détails d'un bug que j'ai découvert avec le mode de navigation privée de Mozilla Firefox, qui permettait de suivre les sessions de navigation privée.
La navigation privée est l'une des fonctionnalités les plus connues et utilisées dans les navigateurs modernes aujourd'hui. Les navigateurs ajoutent continuellement de nombreuses améliorations à la navigation privée pour renforcer la confidentialité des utilisateurs.
Les fonctionnalités offertes peuvent différer d'un navigateur à l'autre, mais au minimum, un utilisateur utilisant la navigation privée a les deux exigences les plus basiques :
Les sites web visités en mode privé ne peuvent pas sauvegarder de données
Les pages visitées ne sont pas sauvegardées
Eh bien, j'ai découvert que le mode de navigation privée du navigateur Firefox ne répondait à aucune de ces exigences.
Détails techniques
Pour qu'un site web puisse suivre un utilisateur à travers les sessions de navigation privée, il doit utiliser un stockage persistant au niveau du navigateur.
Il existe plusieurs façons de stocker des données dans un navigateur - LocalStorage, WebSQL et IndexedDB.
Je suis récemment tombé sur le stockage IndexedDB.
IndexedDB est une API de bas niveau pour le stockage côté client de quantités importantes de données structurées, y compris des fichiers/blobs - Mozilla Developer Network
Bien que, selon la documentation, IndexedDB ne devrait pas être disponible en mode de navigation privée.
Si vous utilisez IndexedDB directement sur la page web, cela générera une erreur :
Mais que se passe-t-il si vous combinez IndexedDB avec des Web Workers ?
Les Web Workers permettent d'exécuter une opération de script en arrière-plan dans un thread séparé du thread d'exécution principal d'une application web - Mozilla Developer Network
Détails du problème : Les conséquences
IndexedDB peut être accessible en mode de navigation privée via les Web Workers. Non seulement cela, mais lorsque le navigateur est fermé, les données IndexedDB ne sont pas effacées. Ces données persisteront à travers plusieurs sessions de navigation privée car elles ne sont pas effacées à la sortie.
Alors, examinons quelques façons dont ce problème pourrait être exploité.
Sites web
Un site web malveillant peut exploiter IndexedDB et suivre les utilisateurs à travers les sessions de navigation privée. Par exemple, supposons que vous avez visité badsite.com, qui utilise des Web Workers et IndexedDB en mode de navigation privée. Fermez la fenêtre de navigation privée, fermez Firefox, redémarrez Firefox, lancez le mode de navigation privée et visitez à nouveau badsite.com. Le site web pourra accéder aux données de votre précédente session de navigation privée, car les données sont toujours stockées dans IndexedDB.
Tiers
Supposons que siteA.com charge un script d'analyse depuis BadAnalyticsSite.com. Ensuite, un autre site web, siteB.com, charge également un script d'analyse depuis le même site BadAnalyticsSite.com. Puisque le site malveillant BadAnalyticsSite.com utilise des Web Workers et IndexedDB, le site BadAnalyticsSite.com peut maintenant suivre les utilisateurs des sites siteA.com et siteB.com à travers toutes leurs sessions de navigation privée.
Fuites de disque
IndexedDB adhère à une politique de même origine, ce qui signifie que chaque base de données a un nom qui l'identifie au sein d'une origine. Comme le nom de domaine est utilisé comme partie du nom de fichier, cela peut entraîner de sérieux problèmes lorsqu'il est utilisé en mode privé.
Par exemple, si un utilisateur visite une page web de test (démo) qui utilise des Web Workers + IndexedDB hébergés sur cdn.cliqz.com, et charge une ressource depuis konarkmodi.github.io, les deux entrées suivantes sont créées sur le disque.
Emplacement de IndexedDB :
profile/storage liste les pages web Poc.
En raison de la faille ci-dessus, un site web ou un tracker pourrait effectivement générer une empreinte digitale et la sauvegarder. Même si un utilisateur devait effacer l'historique du site web ou sélectionner l'option « oublier ce site », le stockage IndexDB n'est pas supprimé. Cela peut créer un stockage permanent pour un site web ou un tracker qui peut être exploité pour toujours.
Rapport et correctifs
Mozilla encourage la recherche en sécurité pour ses produits. En leurs propres termes :
Le programme de prime aux bugs de sécurité client de Mozilla est conçu pour encourager la recherche en sécurité dans les logiciels Mozilla et pour récompenser ceux qui nous aident à créer les logiciels Internet les plus sûrs qui existent.
J'ai signalé ce problème en octobre 2017 via leur Programme de prime aux bugs, et le problème a été corrigé en novembre 2017. Ils ont été prompts à identifier et à corriger les problèmes.
Pour plus de détails, vous pouvez lire le rapport de bug complet sur Bugzilla de Mozilla.
J'apprécie vraiment les efforts et les actions de Mozilla pour corriger les problèmes avec la plus haute priorité lorsqu'il s'agit de la confidentialité de ses utilisateurs.
Bon piratage !
Vous pouvez me suivre sur Twitter à l'adresse Konark Modi
Merci d'avoir lu et partagé ! :)
Si vous avez aimé cette histoire, n'hésitez pas à ??? plusieurs fois (jusqu'à 50 fois. Sérieusement).
_Crédits : Un grand merci à Remi et Pallavi pour avoir relu cet article :)_