Introduction d'une nouvelle technique d'identification du système caché et du navigateur

Un groupe de chercheurs de l'Université de technologie de Graz (Autriche), auparavant connu pour développer des méthodes d'attaque MDS, NetSpectre и Lancer de marteau, découvert des informations sur une nouvelle technique d'analyse tierce qui vous permet de déterminer la version exacte du navigateur, le système d'exploitation utilisé, l'architecture du processeur et l'utilisation de modules complémentaires pour lutter contre l'identification cachée.

Pour déterminer ces paramètres, il suffit d'exécuter le code JavaScript préparé par les chercheurs dans le navigateur. En pratique, le procédé peut être utilisé non seulement comme source supplémentaire pour l'identification indirecte de l'utilisateur, mais également pour déterminer les paramètres d'environnement système pour l'utilisation ciblée des exploits, en tenant compte du système d'exploitation, de l'architecture et du navigateur. La méthode est également efficace lors de l'utilisation de navigateurs avec des mécanismes de blocage d'identification cachés, tels que Tor Browser. Code prototype du code source avec implémentation de la méthode publié sous licence MIT.

La détermination est faite sur la base de l'allocation des modèles d'état de propriété caractéristiques des différents navigateurs en JavaScript et des caractéristiques du temps d'exécution des opérations, en fonction des caractéristiques des mécanismes d'allocation JIT, CPU et mémoire. La définition des propriétés se fait en générant une liste de tous les objets disponibles à partir de JavaScript. Il s'est avéré que le nombre d'objets est directement corrélé au moteur du navigateur et à sa version.

fonction getProperties(o) {
varrésultat = [] ;
tandis que (o !== nul) {
résultat = résultat.concat(Reflect.ownKeys(o));
o = Objet.getPrototypeOf(o);
}
retourne le résultat;
}

Par exemple, pour Firefox, la prise en charge de 2247 propriétés est déclarée dans la documentation, alors que le nombre réel de certaines propriétés, en tenant compte de celles non documentées, est de 15709 (dans le navigateur Tor - 15639), pour Chrome 2698 propriétés sont déclarées, mais 13570 sont effectivement proposés (dans Chrome pour Android - 13119) . Le nombre et les valeurs des propriétés varient d'une version à l'autre du navigateur et selon les différents systèmes d'exploitation.

Les valeurs et la présence de certaines propriétés peuvent être utilisées pour déterminer le type de système d'exploitation. Par exemple, dans Kubuntu, la propriété window.innerWidth est définie sur 1000, et dans Windows 10, elle est définie sur 1001. Sous Windows, la propriété window.navigator.activeVRDisplays est disponible, mais sous Linux, elle ne l'est pas. De nombreux appels spécifiques sont fournis pour Android, mais il n'y a pas de window.SharedWorker. Pour identifier le système d'exploitation, il est également proposé d'utiliser l'analyse des paramètres WebGL dont l'état dépend des pilotes. De plus, appeler WEBGL_debug_renderer_infoextension vous permet d'obtenir des informations sur le moteur de rendu OpenGL, qui est différent pour chaque système d'exploitation.

Pour déterminer le processeur, une évaluation des différences de temps d'exécution de divers blocs de code typiques est utilisée, dont le traitement dépend de l'architecture du jeu d'instructions, en tenant compte du comportement du JIT (il est déterminé combien de registres de processeur seront impliqués et dans quels cas le JIT générera du code efficace avec des optimisations et impliquant des instructions étendues, et dans le cas contraire). Pour déterminer le type de système d'allocation de mémoire et de système d'exploitation, la différence de temps d'allocation de mémoire pour diverses structures est également mesurée, ce qui peut être utilisé pour juger de la taille des blocs de mémoire.

Les paramètres déterminés lors de l'exécution du script sont comparés aux valeurs de référence typiques des environnements pré-testés. Lors du test, la technique développée a permis de déterminer avec précision 40 environnements de test différents, en déterminant les versions des navigateurs utilisés, le fabricant du processeur, le système d'exploitation utilisé et s'il fonctionnait sur du matériel réel ou dans une machine virtuelle.

Séparément, la possibilité de définir des modules complémentaires de navigateur et même des paramètres de module complémentaire individuels, y compris des modules complémentaires conçus pour bloquer les méthodes d'identification cachées ou l'activité de navigation privée, est notée. Dans le cadre de la méthode proposée, de tels ajouts deviennent une autre source de données pour l'identification. Les ajouts sont déterminés par une évaluation des distorsions des paramètres de l'environnement d'origine introduits par les ajouts.

Parmi les autres méthodes d'identification, on peut noter la prise en compte de données indirectes telles que résolution d'écran, liste des types MIME pris en charge, options spécifiques à l'en-tête (HTTP / 2 и HTTPS), analyse des établis plugins et polices, disponibilité de certaines API Web spécifiques aux cartes vidéo caractéristiques rendu avec WebGL et Toile, manipulation avec CSS, analyse des fonctionnalités de travail avec Souris и clavier.

Source: opennet.ru

Ajouter un commentaire