CVE-2021-44228 Log4J Zero Day Affectant... Internet

10 décembre 2021
Luke Richards
Threat Intelligence Lead
CVE-2021-44228 Log4J Zero Day Affectant... Internet

Mise à jour : 13 décembre 2021 - Tentatives d'exploitation des systèmes par les acteurs de la menace

Alors que nous continuons à surveiller la situation, Vectra a observé de multiples tentatives d'exploitation des systèmes par des acteurs de la menace. Au départ, il s'agissait de rappels de base, la première tentative d'exploitation provenant des nœuds TOR - ceux-ci pointaient principalement vers "bingsearchlib[.]com", l'exploitation étant transmise à l'agent utilisateur ou à l'URI de la requête.

Depuis la première vague de tentatives d'exploitation, les acteurs de la menace qui utilisent cette vulnérabilité ont changé de tactique. En particulier, les commandes utilisées ont changé et les acteurs de la menace ont commencé à obscurcir leurs requêtes. À l'origine, ils remplissaient l'agent utilisateur ou l'URI d'une chaîne base64 qui, lorsqu'elle était décodée par le système vulnérable, entraînait le téléchargement par l'hôte d'un dropper malveillant provenant de l'infrastructure de l'attaquant. Ensuite, les attaquants ont commencé à obscurcir la chaîne JDNI elle-même, en tirant parti d'autres fonctions de traduction du processus JDNI. En voici quelques exemples :

${jndi:${lower:l}${lower:d}a${lower:p}://world80
${${env:ENV_NAME:-j}n${env:ENV_NAME:-d}i${env:ENV_NAME:-:}${env:ENV_NAME:-l}d${env:ENV_NAME:-a}p${env:ENV_NAME:-:}//
${jndi:dns://

Tous atteignent le même objectif : télécharger un fichier de classe malveillant et le déposer sur le système cible, ou faire fuir les informations d'identification des systèmes basés sur le site cloud.

Restez à l'écoute du blogVectra pour en savoir plus.

--

Poste d'origine : 10 décembre 2021

On 10th December 2021, a new 0day was discovered in the log4j application. This 0day, now tracked as CVE-2021-44228, takes advantage of the parsing of LDAP logs, and the parsing of the LDAP url in the jndi engine. This engine will automatically look up variables in logs to improve the output of the logs. For example “Logging from ${java:vm}” would output as "Logging from Oracle JVM”. This however, leads to a problem when parsing directory services using this method. When parsing these variables, if there is a dot “.” in the string, the log4j server will look up a remote address and parse the response with the jndi engine.

En utilisant un outil tel que https://github.com/mbechler/marshalsec, un attaquant peut créer une charge utile malveillante et diriger le serveur log4j vers cette charge utile java, qui sera ensuite exécutée dans le moteur conduisant au RCE. Pour plus de détails, consultez les blogs et les dépôts GitHub dans les références.

Log4j est une solution de journalisation très répandue pour les applications Java, les applications web et les modules. Des applications allant de Steam à Minecraft se sont révélées vulnérables, mais de nombreux nœuds ToR ont également été attaqués.

L'un des plus gros problèmes auxquels les utilisateurs sont confrontés avec cette vulnérabilité est que la surface d'attaque est incroyablement grande. Comme le montrent les images de ce dépôt GitHub.

Il convient également de noter que LDAP n'est pas le seul à être vulnérable, mais aussi d'autres analyseurs de services d'annuaire, notamment Remote Method Invocation (RMI) et Common Object Request Broker Architecture (CORBA).

Les développeurs recommandent de mettre à jour les systèmes log4j vers log4j 2.15.0, disponible sur Maven Central.

Si vous utilisez un système compatible avec log4j, vous devez vous adresser au développeur pour obtenir des mises à jour de ses systèmes et supposer que les hôtes qui exécutent log4j sont compromis.

Détection de CVE-2021-442228

L'un des plus gros problèmes de cette vulnérabilité est que le vecteur initial est difficile à détecter. Il se présente sous la forme d'une chaîne dans un journal, vous pourriez examiner l'entrée brute dans le serveur log4j, et alerter sur toutes les connexions externes LDAP. Vous pouvez également rechercher les connexions externes entre les serveurs de journalisation et les fichiers de classe Java.  

If you have access to metadata, using tools such as Cognito Recall and Stream for example, one telltale sign of attempts to compromise servers would be to search for the following patterns in text fields such as User-Agent: /\$\{jndi:.*/

Cette méthode permet de détecter les tentatives de compromission des serveurs, mais ne confirme pas s'il y a eu compromission. L'hypothèse est qu'au moins un serveur d'un domaine sera compromis, et Vectra peut confirmer que des tentatives d'analyse ont été observées dans plusieurs sources.

Pour trouver les hôtes susceptibles d'avoir été compromis, il est possible d'examiner les hôtes qui téléchargent des fichiers JAVA, Jar ou Class. Cependant, si un hôte a été compromis, la meilleure façon de le détecter est de l'observer et de rechercher un comportement suspect, d'autant plus que la surface d'attaque est énorme et que le vecteur initial est difficile à détecter étant donné l'utilisation omniprésente de log4j.

Cognito Detect met en évidence les hôtes ayant un comportement suspect en observant le trafic réseau et en utilisant l'apprentissage automatique et l'intelligence artificielle pour classer le trafic. Nous nous attendons à ce que les hôtes qui ont été compromis présentent des détections de type Command and Control , des détections de mouvement latéral ou des comptes d'application ou de service locaux utilisés dans l'ensemble du domaine. Si un appareil périphérique est compromis, il peut également y avoir plus d'activités de reconnaissance à partir de ces appareils à l'intérieur de la zone démilitarisée.

Il convient également de noter que les systèmes qui exécutent log4j peuvent se trouver au cœur du réseau. Par exemple, ils font partie d'un cluster Elastic, et si c'est le cas, ces hôtes devront également être identifiés.

À cette fin, il serait recommandé de trouver les hôtes d'un domaine qui exécutent potentiellement log4j (Apache Tomcat, Apache Struts, etc.) et de les regrouper ou de les étiqueter, afin qu'il soit plus facile de les surveiller et d'en assurer le suivi, compte tenu du profil de détection et des termes de recherche susmentionnés.