L’art de la détection des bots : comment DataDome utilise Picasso pour le fingerprinting de classe d’appareils
Capturer les bots sophistiqués nécessite toutes sortes de signaux, depuis les signaux comportementaux, la détection de proxys, jusqu’aux empreintes digitales côté client.
En effet, comme les bots sophistiqués utilisent des proxys, imitent le comportement humain et tentent de falsifier plusieurs attributs d’empreintes digitales, il est important d’avoir une redondance et une exhaustivité dans les signaux collectés pour garantir une détection complète des bots.
En ce qui concerne l’empreinte digitale du navigateur côté client, DataDome recueille des signaux de trois manières différentes :
- dans notre balise JavaScript : un agent JS s’exécutant en arrière-plan sur la page d’un site ;
- lorsque nous répondons à une requête avec un CAPTCHA ;
- lorsque nous répondons à une requête avec DataDome Device Check.
Dans ces différents composants, nous collectons de multiples types de signaux d’empreintes digitales de navigateur, abordés sur d’autres articles de blog, allant des :
- informations sur le navigateur, le système d’exploitation et l’appareil – telles que la version du navigateur, le nombre de cœurs de CPU, la mémoire de l’appareil, le type de GPU, etc. ;
- défis spécialement conçus pour détecter les effets secondaires introduits par les frameworks de détection anti-bots et les navigateurs automatisés/sans tête.
Alors que certaines API fournissent des informations sur le système d’exploitation et l’environnement dans lequel le navigateur fonctionne, les développeurs de bots modifient souvent ces valeurs pour paraître plus humains. Ainsi, un bot fonctionnant sur une machine virtuelle Linux peut mentir sur son système d’exploitation pour prétendre qu’il fonctionne sur une machine Windows. Il se peut même qu’il ne mente pas seulement sur la chaîne du système d’exploitation, mais aussi sur d’autres attributs que l’on s’attendrait à voir associés à un système d’exploitation particulier, comme le type de GPU.
Pour éviter de se fier à des API statiques renvoyant des informations sur le système d’exploitation, les chercheurs ont trouvé des moyens de demander à un navigateur d’exécuter un défi JS, qui peut aider à déterminer la nature de son environnement. Lorsque ces tests visent à détecter les machines virtuelles, ils sont nommés red pills (en référence au film Matrix).
Dans cet article de blog, nous présentons comment DataDome tire parti de Picasso, une approche initialement conçue par Google, dans notre CAPTCHA et Device Check pour détecter les bots qui mentent sur leur environnement.
Qu’est-ce que Picasso ?
Picasso est un protocole de fingerprinting de classe d’appareils qui permet à un serveur de vérifier si un appareil ment ou non sur son navigateur, son système d’exploitation, ou son environnement en général.
En général, lorsqu’on parle d’une approche telle que l’empreinte digitale d’un navigateur, une empreinte digitale est une combinaison d’attributs qui est plus ou moins unique et stable, et qui peut aider à identifier un individu. Dans le cas de l’empreinte digitale d’un appareil, l’objectif n’est pas d’identifier un seul individu, mais plutôt une classe d’appareils. Dans le cas de Picasso, nous cherchons à identifier des classes définies par la nature de leur navigateur (Chrome, Firefox, Safari) et de leur système d’exploitation (Windows, Linux, Mac, iOS, Android).
Pour ce faire, Picasso utilise l’API canvas HTML, et en particulier le système de rendu graphique (GPU). Le serveur envoie un défi de preuve de travail à un utilisateur non fiable dont nous voulons vérifier la nature de l’appareil. Le défi Picasso capture alors l’entropie induite par le matériel sous-jacent de l’appareil.
La raison pour laquelle Picasso réussit à identifier le type de système d’exploitation et de navigateur réside dans les différences de rendu de pixels incidentes mais stables à travers les appareils, dues à leurs caractéristiques inhérentes—tant physiques (matériel graphique) que logicielles (pilotes graphiques, système d’exploitation)—ce qui rend ce type de fingerprinting possible (image 1).
En d’autres termes, le résultat graphique d’un navigateur web, tel qu’un canvas HTML5, dépend de différentes couches, du matériel (GPU), aux logiciels de niveau inférieur (pilote GPU, rendu OS), en passant par les logiciels de niveau supérieur (API graphiques fournies par le navigateur et la bibliothèque). Cela rend la sortie d’un canvas HTML5 – pour un ensemble d’instructions exactement identique – hautement unique par système d’exploitation/navigateur, et permet de les différencier avec précision (image 2).
Image 1 : Visualisation des différences de rendu entre un appareil iOS émulé et un réel en utilisant la même pile logicielle. En rouge sont les différences de rendu Picasso pixel par pixel. (Source : “Picasso: Lightweight Device Class Fingerprinting for Web Clients” de Google en 2016)
Image 2 : Visualisation des différences de rendu entre le même défi Picasso pour divers navigateurs. En rouge sont les différences pixel par pixel entre chaque paire de navigateurs. (Source : “Picasso: Lightweight Device Class Fingerprinting for Web Clients” de Google en 2016)
Comment Picasso est-il mis en œuvre chez DataDome ?
DataDome utilise Picasso à la fois dans notre CAPTCHA et dans notre nouvelle réponse Device Check pour vérifier la nature de l’appareil de l’utilisateur en arrière-plan.
Apprendre les valeurs propres à Picasso
Picasso nécessite une phase d’apprentissage. La première étape est menée hors ligne, avant que le système soit mis en production, et une autre phase est effectuée en ligne pendant que le système fonctionne en production. L’objectif des deux phases est de cartographier, pour un défi donné, les différentes classes d’appareils auxquelles les réponses correspondent.
Par exemple, avec seed = 3, le défi Picasso demandera à l’appareil de dessiner deux lignes, trois ellipses et d’appliquer différents dégradés de couleur. Le résultat de ce défi sera différent selon l’appareil de l’utilisateur final, en particulier son navigateur et son système d’exploitation.
Ainsi, durant le processus d’apprentissage, nous souhaitons associer chaque défi et résultat donnés à une classe d’appareil. Pour éviter d’être pollués par des bots qui retourneraient des valeurs Picasso modifiées ou qui auraient falsifié leurs informations de navigateur/système d’exploitation, nous excluons le trafic correspondant à des incohérences d’empreintes déjà connues et nous donnons la priorité à un sous-ensemble de trafic plus fiable.
Utiliser Picasso pour détecter les appareils usurpés sans impacter l’UX
L’image 3 (ci-dessous) illustre comment nous utilisons Picasso dans notre CAPTCHA et Device Check :
- Un client non fiable (bot potentiel) est confronté au défi CAPTCHA ou Device Check de DataDome.
- Le serveur Picasso envoie au client non fiable un défi avec une graine aléatoire, composée d’un ensemble de N itérations d’instructions graphiques telles que la courbe quadratique, la courbe de Bézier, le cercle et la police.
- Le client rend ces instructions graphiques. Le rendu se fait en arrière-plan, complètement invisible pour l’utilisateur final.
- Le client hachure la sortie du canvas et renvoie le résultat du hachage final au serveur Picasso.
- Le serveur Picasso rend un verdict basé sur le hachage de sortie ; les humains vérifiés sont autorisés à passer, et les bots sont bloqués.
Image 3 : Le processus de défi Picasso, effectué en arrière-plan d’une demande.
Picasso utilise une graine aléatoire différente à chaque fois pour prévenir les attaques par rejeu.
Lorsque la réponse au défi est vérifiée, comme lors du rappel du Device Check ou du défi CAPTCHA, le serveur vérifie si la valeur fournie par l’utilisateur correspond à la configuration système d’exploitation/navigateur appropriée.
Dans le cas où une mauvaise configuration est détectée, par exemple une valeur Picasso liée à un système d’exploitation Linux pour un utilisateur prétendant fonctionner sur Windows dans son user-agent, alors l’utilisateur ne peut pas continuer à naviguer sur le site/application mobile.

Image 4 : Exemples de divers défis Picasso rendus sur la page CAPTCHA ou Device Check de DataDome.
Résultats
Le graphique ci-dessous montre le nombre de tentatives de passage de CAPTCHA malveillantes arrêtées par Picasso au cours des 30 derniers jours. Au cours de cette période, Picasso a arrêté plus de 4M de tentatives de passage de CAPTCHA malveillantes soumises par des utilisateurs bots, avec des pics de plus de 750k CAPTCHA par 24h.
Image 5 : Tentatives de passage de CAPTCHA bloquées fermement par Picasso toutes les 24 heures.
Alors que Picasso est efficace pour détecter les bots qui mentent sur la véritable nature de leur environnement, cela peut ne pas être la meilleure approche pour détecter les bots qui n’ont pas besoin de mentir à ce sujet, par exemple un Chrome automatisé fonctionnant sur Windows. C’est pourquoi chez DataDome, nous collectons d’autres types de signaux dans notre CAPTCHA et notre Device Check, tels que :
- les signaux d’empreintes digitales de navigateur ;
- les modèles comportementaux ;
- les différents types de réputations (session, IP) ;
- la détection de proxy résidentiel.
Prêt à voir Picasso en action ? Essayez DataDome gratuitement, ou demandez une démo en direct aujourd’hui.