Vulnérabilité Critique dans Apache Log4j activement exploitée [Mise à jour le 23/12/2021]

Date de publication :

CVE-2021-44228[Score CVSS v3.1: 10]

La vulnérabilité permet à un attaquant distant, à partir d’un serveur LDAP, d'appeler la brique JNDI de log4j d’un serveur Apache à travers un serveur exposé afin d'exécuter du code malveillant. Cela est dû à un manque de contrôle des commandes reçues par l’API JNDI permettant  d’effectuer des connexions LDAP vers des annuaires.

Une preuve de concept de l’exploitation de la vulnérabilité a été publiée sur Internet.

Le CERT-FR a publié une alerte mise à jour le 22/12/2021 : https://www.cert.ssi.gouv.fr/alerte/CERTFR-2021-ALE-022/

Le Centre National pour la Cybersécurité des Pays-Bas a mis à disposition un répertoire GitHub avec la liste des logiciels impactés, les IOCs, les mesures de détection et les mesures de remédiation :  GitHub - NCSC-NL/log4shell: Operational information regarding the vulnerability in the Log4j logging library.

Le CISA a publié un scanner basé sur des outils issus de la communauté open-source : https://github.com/cisagov/log4j-scanner

Informations

La faille est activement exploitée :

Un correctif existe :

Une mesure de contournement existe :

Risques
  • Exécution de code arbitraire à distance

 

 

Systèmes ou composants affectés

Cette vulnérabilité concerne toutes les versions Apache Log4j égale ou antérieure à la 2.15.0.

La vulnérabilité n’est pas exploitable si la machine possède une version de JDK dans une version supérieure à 6u211, 7u201, 8u191 et 11.0.1 car "com.sun.jndi.ldap.object.trustURLCodebase" est appliqué à "false" par défaut, empêchant JNDI d'exécuter du code arbitraire provenant d’une source distante inconnue.

Des liens recensent toutes les applications qui intègrent log4j :

 https://gist.github.com/SwitHak/b66db3a06c2955a9cb71a8718970c592

https://github.com/NCSC-NL/log4shell/tree/main/software 

https://github.com/zer010bs/Log4jAttackSurface

Voici une liste des produits utilisant la librairie :

Apache Solr, vous pouvez consulter la liste des produits concernés sur son site Internet ;
https://lnkd.in/dyxV5PUJ
• Apache Struts, vous pouvez consulter la liste des produits concernés sur son site Internet
;
https://lnkd.in/djFdaXiM
• Atlassian, vous pouvez consulter la liste des produits concernés sur son site Internet ;
https://lnkd.in/dmwWTR6f
• BMC, vous pouvez consulter la liste des produits concernés sur son site Internet ;
https://lnkd.in/dD3gc-bb
• Cisco, vous pouvez consulter la liste des produits concernés sur son site Internet ;
https://lnkd.in/dvr_Tyif
• Citrix, vous pouvez consulter la liste des produits concernés sur son site Internet ;
https://lnkd.in/dNem_TUj
• Debian, vous pouvez consulter la liste des produits concernés sur son site Web ;
https://lnkd.in/drE4NaN3
• Docker, vous pouvez consulter la liste des produits concernés sur son site Internet ;
https://lnkd.in/dk6PKqNS
• F-Secure, vous pouvez consulter la liste des produits concernés sur son site Internet ;
https://lnkd.in/dU-qh9F7
• Fortinet, vous pouvez consulter la liste des produits concernés sur son site Internet ;
https://lnkd.in/dEY8uA_F
• RedHat, vous pouvez consulter la liste des produits concernés sur son site Web ;
https://lnkd.in/d8W8Fc2J
• Solarwinds, vous pouvez consulter la liste des produits concernés sur son site Internet ;
https://lnkd.in/deSzqsBq
• VMware, vous pouvez consulter la liste des produits concernés sur son site Web.
https://lnkd.in/dvM7Fvjp

 

Contournement provisoire

Voir la section contournement provisoire de l'alerte de l'ANSSI : https://www.cert.ssi.gouv.fr/alerte/CERTFR-2021-ALE-022/ 

Solutions ou recommandations

  • Mettre à jour Apache Log4J à minima vers la version 2.16.0 pour java 8 ou la version 2.12.2 pour java 7 et idéalement la version 2.17.0 pour java 8 ou la version 2.12.3 (à venir) pour java 7
  • Pour les versions supérieures à 2.10.0 :
    • Dans les paramètres systèmes de Log4j, passer le paramètre "log4j2.formatMsgNoLookups" à “true” soit lors du lancement de la VM avec le paramètre "-Dlog4j2.formatMsgNoLookups=true" ou dans l'environnement de variable avec les commandes suivantes :

(Possibilité d'utilisé TEKU_OPTS à la place de JAVA_OPTS)

 JAVA_OPTS="-Dlog4j2.formatMsgNoLookups=true" teku --network mainnet

 Ou avec -Xmx : 

JAVA_OPTS="-Dlog4j2.formatMsgNoLookups=true -Xmx4g" teku

 Pour Systemd: 

Environment='JAVA_OPTS="-Dlog4j2.formatMsgNoLookups=true"'

 Pour Systemd avec -XmX: 

Environment='JAVA_OPTS="-Dlog4j2.formatMsgNoLookups=true" "-Xmx4g'

  •  Pour les versions antérieures à la 2.10.0 :