Un bug dans Chrome diffuse vos données personnelles
Un bug dans le navigateur Chrome permet à des tiers malveillants de jouer au jeu des ‘20 questions’ avec vos données personnelles.
la société Imperva vient de mettre la main sur un bug de navigateur que son équipe a découvert. Un probléme susceptible d’affecter la majorité des utilisateurs du Web. De ce fait, des tiers malveillants pourraient jouer aux devinettes pour découvrir des données personnelles stockées par Facebook, Google et, probablement, de nombreuses autres plates-formes Web.
Le bug en question touche tous les navigateurs qui exécutent le moteur Blink utilisé par Google Chrome et constitue une menace pour les utilisateurs qui n’exécutent pas la dernière version du navigateur.
Actuellement, plus de 58 pour cent de tous les utilisateurs d’Internet se servent de Google Chrome. Une fois la vulnérabilité identifiée, Google l’a corrigée dans la nouvelle version Chrome 68. Imperva recommande à tous les utilisateurs de vérifier qu’ils ont la dernière version du navigateur.
Récupération de données personnelles
Le bug en question utilise les balises HTML audio/vidéo pour générer des requêtes à destination d’une ressource cible. La surveillance des événements de progression générés par ces requêtes permet d’avoir une visibilité de la taille réelle de la ressource interrogée. Notre équipe de recherche a découvert que cette information peut ensuite servir à poser une série de questions du type oui et non sur l’utilisateur du navigateur, en trompant les fonctions de filtrage disponibles sur les plates-formes de réseaux sociaux telles que Facebook.
Par exemple, un tiers malveillant peut créer des publications Facebook volumineuses pour chaque âge possible, en utilisant l’option de restriction d’audience, afin que le réseau social reflète l’âge de l’utilisateur à travers la taille de la réponse.
La même méthode peut servir à extraire le sexe de l’utilisateur, ses goûts et de nombreuses autres propriétés que nous avons pu obtenir à travers des publications créées ou des points d’extrémités Graph Search de Facebook.
Une réponse de grande taille indiquera que la restriction ne s’est pas appliquée, tandis que les réponses de petite taille indiqueront une restriction du contenu. Cela signifiera, par exemple, que l’utilisateur a un âge ou un sexe non autorisé. En exécutant plusieurs scripts simultanément, chacun testant une restriction distincte unique, le tiers malveillant peut récupérer relativement facilement une bonne quantité de données personnelles sur l’utilisateur.
Dans un scénario plus grave, le script de l’attaque pourrait s’exécuter sur un site nécessitant un enregistrement par courrier électronique, par exemple un site de commerce en ligne ou SaaS. Dans ce cas, les pratiques précitées pourraient permettre au tiers malveillant de corréler les données personnelles et l’adresse électronique de connexion, afin d’établir un profil plus complet et intrusif.
Déroulement de l’attaque
Lorsqu’un utilisateur visite le site du tiers malveillant, le site injecte plusieurs balises audio et vidéo masquées qui interrogent un certain nombre de publications Facebook que l’attaquant a préalablement publiées et restreintes via différentes techniques. L’attaquant peut alors analyser chaque requête pour connaître, par exemple, l’âge précis de l’utilisateur, indépendamment de ses paramètres de protection de la vie privée.
Découvert du bug ?
Il y a quelques mois, Ron Masas, membre de l’équipe de chercheurs d’Imperva, examinait le mécanisme CORS (Cross-Origin Resource Sharing) en vérifiant les communications d’origines multiples de différentes balises HTML. Pendant sa recherche, il constatait un comportement intéressant dans les balises audio et vidéo. Il lui semblait que la définition de l’attribut ‘preload’ sur ‘metadata’ changeait le nombre de fois que l’événement ‘onprogress’ était appelé, d’une manière apparemment liée à la taille de la ressource demandée.
Pour vérifier son hypothèse, Ron Masas a créé un serveur NodeJS HTTP simple, qui génère une réponse de la taille d’un paramètre donné. Il a ensuite utilisé le point d’extrémité du serveur comme ressource pour le script JavaScript illustré ci-dessus.
Le script crée un élément audio furtif qui :
● Interroge une ressource spécifique ;
● Suit le nombre de fois que l’événement ‘onprogress’ se déclenche ;
● Retourne la valeur du compteur dès que l’analyse audio échoue.
Il commenc à faire des expériences en demandant différentes tailles de réponses. Il recherche une corrélation entre la taille et le nombre de fois que l’événement ‘onprogress’ se déclenche par le navigateur.
Lorsque la taille de la réponse est zéro, un seul événement ‘onprogress’ est appelé. Pour une réponse de près de 100 ko, l’événement réagit deux fois. Ce nombre continue d’augmenter. Cela permet d’estimer la taille de la majorité des pages Web.
À partir de là, le nombre d’événements ‘onprogress’ et la taille de la réponse se corrèlent. La possibilité d’indiquer si les critères de restriction ont été respectés apparaît.
Conclusion
Pour conclure, après avoir confirmé la vulnérabilité, Imperva l’a signalée à Google avec une démonstration du concept, et l’équipe Chrome a corrigé la vulnérabilité dans la version 68.