Improving the WAF with Machine Learning

Cloudflare gère 32 millions de requêtes HTTP par seconde et est utilisé par plus de 22 % de l'ensemble des sites Web dont le serveur est connu de W3Techs. Cloudflare se trouve en position unique pour protéger le trafic lié à 1 propriété Internet sur 5, ce qui lui permet d'identifier les menaces qui émergent et d'en suivre l'évolution et la mutation.

Le pare-feu applicatif web (WAF) se trouve au cœur de la boîte à outils de sécurité de Cloudflare et les règles gérées sont un élément essentiel du WAF. Il s'agit d'un ensemble de règles créées par l'équipe d'analystes de Cloudflare qui ont pour objectif de bloquer les requêtes dont le schéma correspond à celui d'attaques connues. Ces règles gérées fonctionnent extrêmement bien pour les schémas de vecteurs d'attaque établis et ils ont fait l'objet de très nombreux tests afin de réduire au minimum les faux négatifs (qui font passer à côté d'une attaque) et les faux positifs (qui trouvent une attaque là où il n'y en a pas). Malheureusement, les règles gérées passent souvent à côté des variations d'attaque (également appelées contournements), car les règles basées sur des expressions régulières statiques sont intrinsèquement sensibles aux variations de signatures produites, par exemple, par des techniques de fuzzing.

Nous avons été témoins de cet écueil lorsque nous avons publié des protections pour log4j. Pendant quelques jours, après la divulgation de la vulnérabilité, nous avons dû constamment mettre à jour les règles pour les adapter aux variations et aux mutations tandis que les attaquants essayaient de contourner le WAF. Par ailleurs, l'optimisation des règles exige une intervention humaine non négligeable et ne fonctionne généralement qu'une fois que les contournements ont été identifiés, voire exploités ; la protection est donc réactive plus que proactive.

Aujourd'hui, nous sommes heureux de compléter les ensembles de règles gérées (telles que OWASP et l'ensemble de règles gérées par Cloudflare) avec un nouvel outil visant à identifier les contournements et les charges malveillantes, sans intervention humaine et avant leur exploitation. Les clients peuvent désormais accéder aux signaux d'un modèle d'apprentissage automatique formé à distinguer le trafic légitime du mauvais selon la classification établie par les règles gérées et à un volume de données plus important garantissant une meilleure protection au gré d'une vaste gamme d'attaques anciennes ou récentes.

Bienvenue dans notre nouvelle détection WAF à apprentissage automatique.

La nouvelle détection est disponible en accès anticipé pour les clients des offres Enterprise, Pro et Business. Inscrivez-vous dans la liste d'attente si vous êtes intéressé par un essai. À long terme, elle sera disponible pour les clients des niveaux supérieurs.

Le premier WAF en                             auto-apprentissage

Le nouveau système de détection complète les ensembles de règles gérées en apportant trois avantages majeurs :

  1. Il s'exécute sur l'ensemble de votre trafic. Chaque requête est évaluée sur la base d'une vraisemblance à comporter une attaque SQLi ou XSS, par exemple. Cela donne lieu à une nouvelle expérience d'analyse du WAF qui vous permet d'explorer les tendances et les schémas de votre trafic global.
  2. Le taux de détection s'améliore en fonction du trafic passé et des commentaires envoyés en retour. Le modèle est formé pour distinguer le trafic légitime du mauvais selon des catégories établies par les règles gérées exécutées sur l'ensemble du trafic Cloudflare. Ainsi, les petits sites bénéficient du même niveau de protection que les propriétés Internet les plus importantes.
  3. Une nouvelle définition des performances. Le moteur d'apprentissage automatique identifie les contournements et les anomalies avant qu'ils ne soient exploités ou identifiés par les chercheurs humains.

L'ingrédient secret est la combinaison d’une modélisation innovante d'apprentissage automatique, d'un large ensemble de données de formation élaboré à partir des attaques que nous bloquons chaque jour et de techniques d'enrichissement des données, d’une infrastructure idéale pour l'évaluation et les tests reposant sur le principe de tests comportementaux et d'une ingénierie ultra performante qui permet d'évaluer chaque requête avec une latence négligeable.

Une nouvelle expérience du WAF

Le nouveau système de détection repose sur le paradigme lancé avec l'analyse des bots. Suivant cette approche, chaque requête est évaluée et un score lui est attribué, qu'une action la concernant soit déclenchée ou non. Chaque requête recevant un score, les utilisateurs peuvent visualiser la manière dont le score évolue dans le temps pour l'intégralité du trafic dirigé vers son serveur.

Customers can use the machine learning categorization engine to identify trends in their traffic.
Les clients peuvent utiliser le moteur de catégorisation d'apprentissage automatique pour identifier des tendances au sein de leur trafic.

En outre, les utilisateurs peuvent observer l'histogramme des scores des requêtes pour un vecteur d'attaque spécifique (tel que SQLi) et déterminer quel score correspond à une valeur correcte afin de distinguer le trafic légitime du mauvais.

La véritable atténuation s'effectue avec des règles WAF personnalisées pour lesquelles le score permet de décider des requêtes à bloquer. Ainsi, les clients peuvent créer des règles dont la logique fait intervenir n'importe quel paramètre des requêtes HTTP, y compris des champs dynamiques alimentés par Cloudflare tels que les scores des bots.

Firewall rule built on waf ml score.
Règle de pare-feu élaborée à partir d'un score d'apprentissage automatique du WAF.

Nous cherchons désormais à élargir cette démarche afin qu'elle fonctionne également avec des règles gérées (OWASP ou l'ensemble de règles gérées Cloudflare). Les clients seront en mesure d'identifier des tendances et de créer des règles sur la base de schémas qui seront visibles à l'observation de leur trafic global ; au lieu de créer des règles établies par tâtonnement, il faudra journaliser le trafic pour les valider et enfin mettre en place la protection.

Comment fonctionne cette solution ?

Les détections basées sur l'apprentissage automatique complètent les ensembles de règles gérées existantes, telles que OWASP et l'ensemble de règles gérées par Cloudflare. Le système repose sur des modèles conçus pour identifier les variations des schémas d'attaques et les anomalies, sans supervision directe de la part de chercheurs ou de l'utilisateur final.

À ce jour, nous exposons les scores pour deux vecteurs d'attaque : l'injection SQL et le script de site à site. Les utilisateurs peuvent créer des règles de pare-feu/WAF à l'aide de trois scores distincts : un score total (cf.waf.ml.score), un pour SQLi et un pour XSS (cf.waf.ml.score.sqli, cf.waf.ml.score.xss, respectivement). Les scores peuvent avoir des valeurs établies entre 1 et 99, 1 correspondant à un trafic totalement malveillant et 99 à un trafic valide.

Histogram of the score across all traffic hitting an application.
Histogramme du score au sein d'un trafic atteignant une application.

Le modèle est ensuite formé sur la base du trafic classifié par les règles de WAF existantes et il fonctionne sur une version transformée de la requête originale, ce qui facilite l'identification des empreintes numériques des attaques.

Pour chaque requête, le modèle attribue un score individuel à chaque élément de la requête de sorte qu'il est possible de déterminer où ont été décelées les charges malveillantes, par exemple dans le corps de la requête, dans l'URI ou dans les en-têtes.

The detection engine provides a breakdown of where the threats were found (for example, body, URI, headers).
Le moteur de détection présente une liste des emplacements des menaces (par exemple, le corps, l'URI, les en-têtes).

Sur le papier, tout cela paraît facile, mais il existe un certain nombre de difficultés que les ingénieurs de Cloudflare doivent résoudre pour y parvenir. Il s'agit notamment de la manière de créer un ensemble de données fiable, d'un étiquetage de données évolutives, du choix de la bonne architecture modèle, et de la nécessité de procéder à une catégorisation sur chaque requête traitée par le réseau global de Cloudflare (par exemple 32 millions de fois par seconde).

Au cours des prochaines semaines, l'équipe d'ingénierie publiera une série d'articles de blog qui expliqueront plus en détails comment fonctionne concrètement la solution.

Perspectives d'avenir

Au cours des prochains mois, nous allons lancer le nouveau moteur de détection auprès des clients et recevoir leurs impressions concernant ses performances. À long terme, nous prévoyons d'élargir le moteur de détection afin de couvrir l'ensemble des vecteurs d'attaque déjà identifiés par les règles gérées et d'utiliser les attaques bloquées dans le modèle d'apprentissage automatique pour enrichir plus encore nos ensembles de règles gérées.