Algorithmes génétiques : utiliser la sélection naturelle pour bloquer le trafic des bots
Dans cet article, nous allons explorer le concept des algorithmes génétiques – une technique d’intelligence artificielle inspirée par la sélection naturelle – et comment ces derniers peuvent être utilisés comme méthode de génération de règles pour bloquer efficacement le trafic des bots.
Qu’est-ce qu’un algorithme génétique ?
Les algorithmes génétiques sont un type d’intelligence artificielle inspiré par le processus de sélection naturelle. La structure principale d’un algorithme génétique est la suivante :
- Initialisation : création d’une population initiale de solutions potentielles (individus).
- Évaluation : évaluer chaque individu de la population en fonction d’un critère spécifique.
- Sélection : sélectionner les meilleurs individus de la population pour se reproduire.
- Reproduction : combiner le matériel génétique des individus sélectionnés par croisement pour créer des descendants.
- Mutation : introduction de changements aléatoires (mutations) dans le matériel génétique des descendants.
- Remplacement : remplacer les individus les moins performants de la population par les nouveaux descendants.
- Arrêt : répéter les étapes 2 à 6 jusqu’à ce qu’une solution satisfaisante soit trouvée ou qu’une condition d’arrêt soit atteinte.
Le processus de sélection, reproduction et mutation imite la sélection naturelle et la variation génétique, ce qui permet à l’algorithme d’explorer l’espace des solutions et de converger vers de meilleures solutions au fil des générations.
Utiliser les algorithmes génétiques pour la protection contre les bots
L’objectif de cette nouvelle méthode de détection basée sur des règles est d’utiliser des algorithmes génétiques pour identifier des segments de trafic causés par des activités malveillantes. Nous pouvons ensuite créer des règles pour bloquer automatiquement ces segments.
Bien que DataDome s’appuie fortement sur des techniques d’apprentissage automatique pour détecter le trafic malveillant des bots, notre moteur de détection offre également la possibilité d’exécuter des millions de règles en quelques millisecondes. Des milliers de règles—générées à la fois manuellement et automatiquement—filtrent déjà efficacement le trafic. Multiplier les méthodes que nous utilisons pour créer des règles garantit une protection aussi complète que possible. La nature de cet algorithme permet d’identifier un trafic de bots qui n’aurait pas été détecté autrement, en introduisant du hasard et en ne faisant aucune hypothèse sur la nature des requêtes à cibler.
Voyons comment nous avons conçu ce système :
1. Définir le résultat attendu
Notre objectif est que l’algorithme génère des règles ciblant spécifiquement le trafic de bots qui n’a pas déjà été bloqué par nos autres méthodes de détection. Ces règles doivent être définies comme une combinaison de prédicats, afin de cibler des signatures de requêtes spécifiques.
Pour commencer, nous collectons un ensemble de paires clé-valeur uniques à partir des signatures des requêtes stockées au cours des derniers jours. Cet ensemble contient les prédicats que nous utiliserons pour construire nos solutions potentielles (c’est-à-dire nos règles ciblant des segments spécifiques de trafic).

Si nous recevons une requête POST provenant de France avec Chrome comme user-agent, nous ajoutons Method=POST, Country=France et UserAgent=Chrome à notre ensemble de prédicats.
Nous sommes ensuite en mesure de créer un ensemble de règles de base en combinant aléatoirement des éléments de notre ensemble de prédicats. Cet ensemble de base servira de point de départ pour l’évolution de l’algorithme.

Par exemple, nous créons la règle A, définie comme Country=Spain AND UserAgent: Chrome, et la règle B comme Country=France AND UserAgent: Firefox.
Notre hypothèse est que nous serons capables de générer de nouvelles règles à partir de ces règles de base grâce à un processus évolutif. Ces nouvelles règles utiliseront une combinaison de prédicats pour correspondre efficacement au trafic des bots.
2. Évaluer nos solutions potentielles
Ensuite, nous devons être en mesure d’évaluer la pertinence de chaque règle – c’est à dire sa capacité à cibler le trafic des bots. Cette étape est délicate : comme nous essayons de découvrir des activités de bots qui n’ont pas été détectées par d’autres méthodes, nous n’avons pas de labels fiables pour déterminer si les requêtes correspondantes à notre règle proviennent de bots ou d’humains.
La solution que nous avons adoptée a consisté à examiner la série chronologique des demandes qui auraient été prises en compte par la règle. En particulier, nous combinons deux mesures pour attribuer un score de qualité à chaque règle :
- Nous évaluons à quel point la série temporelle est similaire à celles des modèles de bots connus (rassemblés grâce aux autres méthodes de détection de DataDome). Nous voulons que nos règles soient aussi proches que possible d’un modèle de bot connu.

La série temporelle violette est très différente de ce modèle de bot connu. Si elle diffère de tous les modèles de bots, la règle obtiendrait un score faible.

Cette série temporelle orange est très similaire à ce modèle de bot connu. La règle associée à cette série temporelle obtiendrait un score élevé.
- Nous évaluons à quel point la série temporelle est similaire aux séries temporelles du trafic humain légitime connu. Nous souhaitons que nos règles soient aussi différentes que possible de tous nos modèles humains connus.

La série temporelle violette est très similaire à ce modèle humain connu. La règle associée à cette série temporelle obtiendrait un score faible.

La série temporelle orange est très différente de ce modèle humain connu. Si elle diffère de tous les modèles humains, la règle obtiendrait un score élevé.
Si une série temporelle présente les caractéristiques d’un modèle de trafic de bots et diffère de toutes nos séries temporelles humaines connues, la règle associée sera considérée comme bonne et obtiendra un score élevé. Sinon, la règle obtiendra un score faible.
3. Faire évoluer nos règles vers une solution satisfaisante
Une fois que nous avons attribué un score à chacune de nos règles, nous pouvons conserver celles qui sont les plus performantes (c’est « la survie des plus aptes ») et générer de nouvelles règles en combinant celles que nous avons retenues.

Nous pouvons combiner notre règle A et notre règle B pour créer une règle C, qui pourrait être définie comme Country=France AND UserAgent: Chrome.

Les règles les plus performantes de la génération précédente, ainsi que les nouvelles règles créées, composent notre génération suivante.
Ensuite, nous introduisons des mutations aléatoires et peu fréquentes dans nos règles afin d’intégrer de nouveaux prédicats dans la population des solutions potentielles.

Nous pouvons muter aléatoirement la règle C en supprimant une partie de la règle et en la remplaçant par une autre paire clé-valeur de notre ensemble de prédicats, comme remplacer Country=France par ConnectionType=Cellular.
En introduisant des mutations, l’algorithme est capable d’explorer de nouvelles zones de l’espace des solutions et de potentiellement découvrir de meilleures solutions qui lui auraient échappé autrement.
Après avoir créé cette nouvelle génération, nous pouvons répéter le processus d’évaluation de nos solutions potentielles et les combiner pour en générer de nouvelles, encore et encore. Ce processus permet d’augmenter le score de pertinence de notre population à chaque nouvelle génération.
Une fois que nous avons obtenu un nombre suffisant de règles satisfaisantes, nous pouvons arrêter le processus d’évolution et intégrer ces nouvelles règles dans notre système de détection.
Résultats et conclusion
Au cours de cette phase de la « proof of concept » du projet, nous avons démontré avec succès que l’algorithme est capable de trouver des solutions avec un score de pertinence croissant à chaque nouvelle génération.
En exécutant périodiquement l’algorithme sur des données récentes, nous avons pu détecter et filtrer en continu le trafic des bots. Les règles générées par l’algorithme correspondent efficacement au trafic des bots avec un taux de faux positifs minimal, validant ainsi l’efficacité de notre méthode de scoring. Environ 160 000 requêtes malveillantes, auparavant non détectées, ont été bloquées en 24 heures grâce à seulement 30 règles générées sur un périmètre limité.

Un échantillon de règles bloquant le trafic en temps réel. L’algorithme a généré de nouvelles solutions à 8h40, entraînant l’introduction de nouvelles règles pour filtrer le trafic des bots qui n’avait pas été détecté auparavant.
Le principal avantage de cette méthode est que nous ne faisons aucune (ou très peu) d’hypothèse sur les parties du trafic à cibler ou sur la structure des règles de sortie. L’algorithme explore l’espace des solutions potentielles afin de trouver des règles qui bloquent progressivement mieux le trafic des bots à chaque génération.
Pour en savoir plus sur la façon dont DataDome protège les entreprises contre les menaces de cyberfraude, réservez une démo dès aujourd’hui.