Câest trĂšs compliquĂ© car la vulnĂ©rabilitĂ© peut se trouver Ă tellement dâendroits⊠pour faire simple : câest la merde et vous risquez dâen avoir pour des jours, voire des semaines, dâautant que cette vulnĂ©rabilitĂ© arrive en pleines fĂȘtes de NoĂ«l, en plein pendant vos gels de fin dâannĂ©es (vos « freeze » annuels de toute modification sur vos infrastructures).
Il faut ĂȘtre capable de cartographier son systĂšme dâinformation au sens large en identifiant tous les Ă©diteurs afin de savoir sâils sont vulnĂ©rables ainsi que tous vos logiciels, services, applications⊠en Java qui pourraient ĂȘtre vulnĂ©rables.
Pour les Ă©diteurs, il faut suivre les bulletins dâalertes, utiliser le git de SwitHak citĂ© plus haut et suivre lâactualitĂ© sĂ©curitĂ© car cela risque de bouger trĂšs vite dans les jours qui viennent.
Ensuite, il faut ĂȘtre capable de savoir si vos logiciels utilisent Log4j dans les versions vulnĂ©rables (cf. bulletin de lâANSSI), ce qui nâest pas trivial. Suivant la version de Java, la version de Log4j⊠il vous faudra dĂ©cider de mettre Ă jour ou dâappliquer un contournement.
En parallÚle, il est important de continuer à rechercher les exploitations potentielles de la vulnérabilité partout.
Le bulletin de lâANSSI : https://www.cert.ssi.gouv.fr/alerte/CERTFR-2021-ALE-022/
Corriger
Le mieux est de mettre à jour avec la derniÚre version de log4j car les versions intermédiaire sont vulnérables à un déni de service ou une exécution de code à distance.
En thĂ©orie il est possible de rester en 2.16.0 car ce nâest quâun dĂ©ni de service, mais je recommande plutĂŽt de peser le pour et le contre en se posant cette question : est-il plus facile/rapide pour moi de qualifier le besoin de cette nouvelle mise Ă jour vs le temps et la difficultĂ© Ă mettre Ă jour.
Si la mise Ă jour se fait en 1 clic ou en une seule commande mettant Ă jour 2000 serveurs, sans impact de disponibilitĂ© de la plateforme, nâhĂ©sitez pas Ă passer en 2.17.1 đ.
Sâil faut redĂ©marrer des hyperviseurs avec un arrĂȘt complet de vos services pendant 2 heures, restez en 2.16.0 pour lâinstant.
Contournements
Il est possible de mettre en place une variable dĂ©sactivant les rĂ©solutions de nom, limitant lâexploitation de la vulnĂ©rabilitĂ© mais ne la corrige pas :
Soit en modifiant la ligne de commande de lâappel au logiciel : # java ⊠âDlog4j2.formatMsgNoLookups=True ⊠-jar mon_appli_toute_moisie.jar
Soit en mettant en place une variable dâenvironnement dans le fichier .profile du compte exĂ©cutant le service : « export LOG4J_FORMAT_MSG_NO_LOOKUPS=true»
Pour les applications en Docker, dans le fichier « Dockerfile », il faut ajouter « ENV LOG4J_FORMAT_MSG_NO_LOOKUPS=true »
Ou dans le fichier « Dockerfile», au niveau de la ligne de commande, il faut ajouter « CMD âjavaâ, â-Dlog4j.formatMsgNoLookups=trueâ, â-jarâ, ââŠâ »
Ou dans le fichier « docker-compose.yml », il faut ajouter:
web:
environment:
â LOG4J_FORMAT_MSG_NO_LOOKUPS=true
Plus de détails ici : https://www.docker.com/blog/apache-log4j-2-cve-2021-44228/
Virtual patching
Plusieurs entreprises, dont AWS, proposent des solutions permettant de corriger la vulnérabilité juste en redémarrant le service en lui adjoignant une bibliothÚque complémentaire chargée de corriger le problÚme en mémoire.
En voici trois :
https://github.com/corretto/hotpatch-for-apache-log4j2 (Ă©quipe dâAWS)
https://github.com/nccgroup/log4j-jndi-be-gonehttps://blog.fox-it.com/2021/12/14/log4j-jndi-be-gone-a-simple-mitigation-for-cve-2021-44228/
Avec la phrase ci-dessous, le dernier article permet de comprendre que des logiciels payant avec DRM embarquent des logiciels libres đ€Šââïž :
<<The benefit ⊠negate the vulnerability ⊠so long as it isnât obfuscated (e.g. with proguard), in which canse you may not be in a good position to update it anyway. >>
Cloisonner
Cela fait partie des bonnes pratiques : il faut filtrer strictement les flux, en particulier sortants afin dâempĂȘcher un serveur vulnĂ©rable dâaller chercher un code dâexploitation quelque part ou de dialoguer avec un serveur de command and control (C2).
Bon courage Ă tous !
Au moment oĂč jâĂ©cris ces lignes, Guillaume Poupard, le directeur de lâANSSI, vient de publier :
<< đšUne vulnĂ©rabilitĂ© a Ă©tĂ© dĂ©couverte dans la bibliothĂšque de journalisation Apache log4j. âŠ
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Ă©, par exemple en tirant parti dâune page dâauthentification qui journalise les erreurs dâauthentification.
Des preuves de concept ont dĂ©jĂ Ă©tĂ© publiĂ©es et des codes dâexploitation sont susceptibles dâĂȘtre rapidement dĂ©veloppĂ©s.
Les dĂ©tails dans lâalerte CERTFR-2021-ALE-022đ
https://www.cert.ssi.gouv.fr/alerte/CERTFR-2021-ALE-022/
https://www.linkedin.com/posts/guillaume-poupard-3604531b5_objet-vuln%C3%A9rabilit%C3%A9-dans-apache-log4j-activity-6875847639280234496-2mcz