La détection des bots côté serveur ne suffit pas. Découvrez pourquoi.
La plupart des professionnels de la sécurité informatique sont parfaitement conscients des bots malveillants et des menaces permanentes qu’ils font peser sur les entreprises présentes en ligne. C’est pourquoi la demande pour des logiciels antibots ne cesse d’augmenter.
Une solution de protection contre les bots performante doit différencier les bots malveillants des bons bots et des humains, idéalement en temps réel. Pour déterminer si un visiteur est un humain ou un bot, nous pouvons récolter des informations côté serveur et côté client, dans le navigateur ou dans une application mobile.
Dans cet article, nous vous expliquons pourquoi les solutions qui reposent uniquement sur la détection côté serveur ne sont pas optimales face à certains types de bots, et pourquoi les signaux côté client doivent compléter l’analyse pour fournir une protection véritablement efficace contre les bots.
La reconnaissance d’empreinte côté serveur identifie les bots basiques
La détection côté serveur est généralement basée sur les informations suivantes :
- Empreinte HTTP : empreinte constituée des en-têtes HTTP envoyées par le navigateur, comme l’agent utilisateur ou les algorithmes de compression pris en charge.
- Empreinte TCP : s’appuie sur les différences dans la pile TCP, comme l’ordre des paquets, pour déterminer la nature du navigateur ou de l’appareil qui envoie la demande.
- Empreinte TLS : utilise l’ensemble des suites cryptographiques TLS pour identifier la nature de l’appareil et du logiciel (par ex., une application mobile) qui soumet la requête.
- Caractéristiques comportementales côté serveur : nombre de demandes, fréquence des demandes et identification d’un schéma de navigation permettant potentiellement de déterminer si un utilisateur est humain ou non.
Cette détection côté serveur, bien qu’indispensable, ne suffit pas.
Quelles sont les limites de la détection des bots côté serveur ?
Face aux générations les plus récentes de bots, une solution de sécurité basée uniquement sur la détection côté serveur est rapidement confrontée à ses limites. En effet, ces bots avancés utilisent exactement les mêmes navigateurs que les utilisateurs humains (Chrome, Firefox, Safari) ou des navigateurs sans tête comme Chrome Headless.
Contrairement aux bots basiques qui ne peuvent pas exécuter JavaScript et sont donc faciles à démasquer, ces bots avancés ont des empreintes HTTP, TCP et TLS cohérentes.
Par ailleurs, il est possible de corriger les petites incohérences (par exemple, un agent utilisateur non humain) en ajoutant quelques lignes de code au bot ou en utilisant des structures d’instrumentation open source pour falsifier les empreintes cohérentes (expliqué plus en détail ci-dessous).
Si vous vous basez uniquement sur la détection côté serveur, ces bots vous échappent complètement. Vous pouvez uniquement vous reposer sur les caractéristiques comportementales côté serveur et attendre que les bots déclenchent votre seuil de volume de requêtes pour pouvoir les bloquer.
Cette approche ne permet pas d’identifier les bots qui changent fréquemment d’adresse IP à l’aide de proxys. Et même s’ils ne le font pas, les bots qui ciblent les points de vulnérabilité tels qu’une page de connexion ont le temps de provoquer beaucoup de dégâts avant d’être identifiés.
C’est pourquoi une solution de détection des bots véritablement performante doit combiner la détection côté serveur et côté client.
Exemple d’utilisation : les bots avancés Chrome Headless qui modifient leur empreinte pour éviter la détection
Dans cet exemple, les hackers tentent de lancer une attaque par credential stuffing à l’aide de milliers de bots basés sur Chrome Headless et Puppeteer.
Par défaut, Chrome Headless peut être identifié côté serveur via son agent utilisateur :
Mozilla/5.0 (X11; Linux x86_64)
AppleWebKit/537.36 (KHTML, comme Gecko)
HeadlessChrome/79.0.3945.88
Safari/537.36
Cependant, les bibliothèques open source courantes comme Puppeteer extra permettent aux développeurs d’effacer ces signaux de détection évidents.
La bibliothèque Puppeteer extra ajoute des fonctionnalités à la structure d’instrumentation Puppeteer. Grâce à son plugin “stealth”, les hackers peuvent facilement modifier les empreintes de leurs bots Chrome Headless. Cela suffit à contourner la plupart des systèmes de détection de bots existants.
Par défaut, Puppeteer extra change les agents utilisateurs des bots pour qu’ils soient cohérents avec les visiteurs humains et supprime les attributs comme navigator.webdriver, traditionnellement utilisés pour détecter Chrome Headless.
La bibliothèque permet également aux développeurs de bots de falsifier plusieurs autres attributs, comme la liste des plugins, les codecs disponibles ou la carte graphique.
Vous pouvez l’essayer et lancer facilement un crawler basé sur le plug-in stealth Puppeteer à l’aide du code ci-dessous. La principale différence, par rapport à un programme Puppeteer classique, est l’importation de puppeteer à la place de puppeteer-extra :