De manière générale, les moteurs DOM sont des composants qui font l’objet de corrections constantes par les développeurs de navigateurs. Lorsqu’un fournisseur de navigateur publie une mise à jour de sécurité, il est vraiment rare que cette mise à jour ne contienne pas de correctifs pour au moins plusieurs bogues dans le moteur DOM, rappelle Ivan Fratric, le chercheur en sécurité du projet Google Project Zero.
Conscient que des failles non détectées au niveau du DOM peuvent être exploitées par des pirates pour pourrir la vie des utilisateurs, une des missions de Fratric après avoir rejoint Google Project Zero fut « de tester l’état actuel de la résilience des principaux navigateurs Web contre le fuzzing DOM ». Le fuzzing ou test à données aléatoires est une technique qui permet de traquer les failles de sécurité dans les logiciels en injectant des données aléatoires dans les entrées du programme testé.
Bien que de nombreux fuzzers de DOM existent, Fratric a décidé d’écrire son propre test à données aléatoires. L’objectif n’était pas de créer un fuzzer révolutionnaire, mais plutôt « de créer un fuzzer qui a une couverture initiale décente, est facilement compréhensible et extensible et peut être réutilisé » par Fratric lui-même ainsi que d’autres chercheurs sur d’autres cibles en plus du DOM des navigateurs.
Après avoir écrit son algorithme de tests, Fratric l’a nommé Domato. Il se compose de plusieurs parties. Un moteur de base capable de générer un échantillon en fonction d’une grammaire d’entrée. Selon le chercheur, « cette partie est intentionnellement assez générique et peut être appliquée à d’autres problèmes en plus du DOM ». Une autre partie de Domato est composée d’un script principal qui analyse les arguments et utilise le moteur de base pour créer des échantillons. « La plupart des logiques spécifiques aux DOM sont capturées dans cette partie », souligne le chercheur. Une dernière partie regroupe « un ensemble de grammaires pour la génération de code HTML, CSS et JavaScript ».
Fratric précise en outre que les différents navigateurs n’ont pas été testés dans les mêmes conditions. Google Chrome a été testé sur le cluster de fuzzing de Google appelé ClusterFuzz. Firefox a été testé sur une infrastructure interne de Google basée sur Linux. Internet Explorer 11 a été testé avec Domato sur Google Compute Engine exécutant Windows Server 2012 R2 64 bits. Pour Microsoft Edge, la tâche s’est avérée un peu plus ardue. Google Compute Engine ne supportant pas à l’heure actuelle Windows 10, le chercheur et son équipe ont dû créer un cluster virtuel de machines virtuelles Windows 10 sur Microsoft Azure. C’est ce même procédé qui a permis de tester également Internet Explorer. Pour ce qui concerne Safari, vu que la réalisation de tests de fuzzing sur ce navigateur nécessitait de disposer d’une machine MacBook, le chercheur a testé WebKitGTK+ qui est compatible avec les infrastructures internes de Google qui sont basées sur Linux.
Après avoir testé les différents moteurs de rendu des différents navigateurs cités ci-dessus, Fratric rapporte que Chrome a laissé apparaître deux bogues de sécurité. Firefox en dénombrait quatre. Internet Explorer en comptait quatre également. Sur Microsoft Edge, Fratric en a trouvé six. Cela est assez étonnant quand on sait que Microsoft pousse en avant Edge en avançant plusieurs arguments, dont celui de la sécurité. Et enfin pour le moteur de rendu de Safari, le chercheur a dénombré 17 failles de sécurité. En tout, 31 vulnérabilités liées à la sécurité ont été découvertes. Et en analysant de plus près ces résultats, nous constatons que Safari compte le plus de failles de sécurité (17 en tout) que tous les autres navigateurs combinés (16 failles en tout).
Pour Fratric, « ceci est particulièrement préoccupant étant donné l’intérêt des attaquants pour la plateforme, comme en témoignent les prix d’exploit et les attaques ciblées récentes ». Il ajoute qu’il « est également intéressant de comparer les résultats de Safari à Chrome comme il y a quelques années, ils utilisaient le même moteur DOM (WebKit). Apparemment, après la scission de Blink/Webkit, soit le nombre de bogues dans Blink a considérablement réduit ou un nombre significatif de bogues ont été introduits dans le nouveau code WebKit (ou les deux) ».
Enfin, le chercheur précise qu’il « est très important de noter qu’ils [ces résultats] ne reflètent pas nécessairement la sécurité de l’ensemble du navigateur et se concentrent plutôt sur un seul composant (moteur DOM), mais qui a toujours été une source de nombreux problèmes de sécurité. »
Source : Google Project Zero
Et vous ?
Que vous inspirent les résultats de ces tests de fuzzing ?
Pensez-vous qu’ils reflètent la réalité ?
Ces résultats auront-ils une influence quelconque sur le choix des navigateurs auprès des utilisateurs ?
Voir aussi
Pwn2Own 2015 : les hackers en action, comment Firefox, Chrome, IE, Safari, Windows, Adobe Flash et Reader ont été piratés
Safari vulnérable au spoofing d'adresses, la faille permet de lancer des attaques de phishing pour tromper l'utilisateur
Chrome 51 : Google corrige quinze failles de sécurité, dont deux jugées critiques et a encore versé 26 000 $ à des chercheurs en sécurité
Les résultats de fuzzing d'un chercheur de Google mettent en évidence plus de failles dans Safari
Que dans les autres navigateurs réunis
Les résultats de fuzzing d'un chercheur de Google mettent en évidence plus de failles dans Safari
Que dans les autres navigateurs réunis
Le , par Olivier Famien
Une erreur dans cette actualité ? Signalez-nous-la !