Détection de l’exploitation de la vulnérabilité CVE-2021-44228 (Log4j2) avec Elastic Security

blog-security-detection-720x420.png

AVERTISSEMENT :

  • Pour comprendre comment Elastic évalue actuellement le risque interne de cette vulnérabilité dans nos produits, veuillez consulter l’avis ici.
  • Ce blog a été mis à jour (14 décembre 2021) avec de nouvelles améliorations concernant la détection et la recherche de menace depuis sa publication initiale.

Aperçu

Le présent article de blog fournit un résumé de la vulnérabilité CVE-2021-44228 et fournit aux utilisateurs d’Elastic Security des outils permettant de détecter une exploitation active de celle-ci dans leur environnement.

Cet article sera complété au fur et à mesure que nous en apprendrons davantage. Cette version est exacte en date du mardi 14 décembre 2021. Les mises à jour d’Apache peuvent être consultées directement sur la page sécurité de Log4j2.

Résumé relatif à la vulnérabilité CVE-2021-44228 (Log4Shell)

Log4j2 est un framework open source de logging intégré à de nombreuses applications Java sur les systèmes des utilisateurs finaux et les serveurs. À la fin novembre 2021, Chen Zhaojun d’Alibaba a identifié une vulnérabilité d’exécution de code à distance, finalement signalée sous l’ID CVE : CVE-2021-44228, rendue public le 10 décembre 2021. La vulnérabilité est exploitée via une désérialisation incorrecte des entrées utilisateur transmises au framework. Elle autorise l’exécution de code à distance et peut permettre à un pirate de divulguer des données sensibles, telles que des variables d’environnement, ou d’exécuter des logiciels malveillants sur le système cible.

La vulnérabilité identifiée affecte toutes les versions de Log4j2 de la version 2.0-beta9 à la version 2.14.1. Les premières méthodes destinées à corriger le problème ont abouti à un certain nombre de versions candidates, pour finir par des recommandations de mise à niveau du framework vers la version Log4j2 2.15.0-rc2 au moment de la rédaction de cet article.

Compte tenu de la complexité et de la nature de l’exploitation généralisée observée, l’atténuation doit être considérée comme critique dans tout environnement ayant identifié des logiciels exploitant des versions vulnérables de Log4j2.

Détection de l’exploitation de Log4Shell avec Elastic Security

Les utilisateurs d’Elastic Security peuvent utiliser la règle de détection de corrélation d’évènements suivante afin d’identifier l’exploitation active de la vulnérabilité Log4j2. Selon le format des données des évènements sur l’hôte, il vous faudra peut-être modifier cette détection afin qu’elle corresponde à vos champs de données.

Règle de détection lors de l’utilisation de données Endpoint

sequence by host.id with maxspan=1m
 [network where event.action == "connection_attempted" and 
  process.name : "java" and
  /* 
     outbound connection attempt to 
     LDAP, RMI or DNS standard ports 
     by JAVA process 
   */ 
  destination.port in (1389, 389, 1099, 53, 5353)] by process.pid
 [process where event.type == "start" and 

  /* Suspicious JAVA child process */
  process.parent.name : "java" and
   process.name : ("sh", 
                   "bash", 
                   "dash", 
                   "ksh", 
                   "tcsh", 
                   "zsh", 
                   "curl",
                   "perl*",
                   "python*",
                   "ruby*",
                   "php*", 
                   "wget")] by process.parent.pidEn savoir plus

Règle de détection lors de l’utilisation des données Auditbeat

sequence by agent.id with maxspan=1m
 [network where event.action == "connected-to" and 
  process.name : "java" and
  /* 
     outbound connection attempt to 
     LDAP, RMI or DNS standard ports 
     by JAVA process 
   */ 
  destination.port in (1389, 389, 1099, 53, 5353)] by process.pid
 [process where event.type == "start" and 

  /* Suspicious JAVA child process */
  process.parent.name : "java" and
   process.name : ("sh", 
                   "bash", 
                   "dash", 
                   "ksh", 
                   "tcsh", 
                   "zsh", 
                   "curl",
                   "perl*",
                   "python*",
                   "ruby*",
                   "php*", 
                   "wget")] by process.parent.pidEn savoir plus

Règle de détection lors de l’utilisation d’évènements en streaming Endgame

sequence by agent.id with maxspan=1m
 [network where event.category == "network" and 
  process.name : "java" and
  /* 
     outbound connection attempt to 
     LDAP, RMI or DNS standard ports 
     by JAVA process 
   */ 
  destination.port in (1389, 389, 1099, 53, 5353)] by process.pid
 [process where event.type == "start" and 

  /* Suspicious JAVA child process */
  process.parent.name : "java" and
   process.name : ("sh", 
                   "bash", 
                   "dash", 
                   "ksh", 
                   "tcsh", 
                   "zsh", 
                   "curl",
                   "perl*",
                   "python*",
                   "ruby*",
                   "php*", 
                   "wget")] by process.parent.pidEn savoir plus

Cette règle de détection recherche une séquence d’une tentative de connexion sortante vers des ports standard pour LDAP, RMI et DNS (souvent exploitée via des attaques par injection JAVA/JNDI observées récemment), suivie d’un processus enfant de la même instance de processus Java.

À présent, montrons comment cette règle détecte l’exploitation de la vulnérabilité log42j :

La capture d’écran ci-dessus montre un pirate exploitant la vulnérabilité avec une charge utile codée en base-64

La capture d’écran ci-dessus montre un pirate exploitant la vulnérabilité avec une charge utile codée en base 64 ciblant un exemple d’application vulnérable créé par Christophe Tafani-Dereeper.

Cette capture d’écran montre la détection de l’exploitation active de CVE-2021-44228 dans Elastic Security, détaillant à la fois l’alerte et la chronologie de l’exploitation de la faille.

Cette capture d’écran montre la détection de l’exploitation active de CVE-2021-44228 dans Elastic Security, détaillant à la fois l’alerte et la chronologie de l’exploitation de la faille.

La capture d’écran ci-dessus montre, dans l’enquête de l’alerte de détection, que Java a exécuté un script shell pour télécharger et exécuter un script Bash.
  • We're hiring

    Work for a global, distributed team where finding someone like you is just a Zoom meeting away. Flexible work with impact? Development opportunities from the start?