
Déploie un agent pour corriger CVE-2021-44228 (vulnérabilité Log4j RCE) dans un processus JVM en cours d'exécution
Le développement ultérieur de cet outil se poursuivra sur corretto/hotpatch-for-apache-log4j2.
Merci d'avoir partagé, commenté, testé et contribué à ce projet !
Il s'agit d'une POC d'un outil simple qui injecte un agent Java dans un processus JVM en cours d'exécution. L'agent corrigera la méthode lookup() de toutes les instances chargées de org.apache.logging.log4j.core.lookup.JndiLookup pour retourner inconditionnellement la chaîne "Patched JndiLookup::lookup()". Cela devrait corriger la vulnérabilité d'exécution de code à distance CVE-2021-44228 dans Log4j sans redémarrer le processus Java.
Cet outil n'a été testé pour l'instant qu'avec JDK 8 et 11 !
Avertissement : ce code est fourni dans l'espoir qu'il sera utile, mais sans aucune garantie !
JDK 8
javac -XDignore.symbol.file=true -cp <java-home>/lib/tools.jar Log4jPatch.java
JDK 11
javac --add-exports java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED Log4jPatch.java
JDK 8
java -cp .:<java-home>/lib/tools.jar Log4jPatch <java-pid>
JDK 11
java Log4jPatch <java-pid>
Si vous obtenez une erreur comme :
Exception in thread "main" com.sun.tools.attach.AttachNotSupportedException: The VM does not support the attach mechanism
at jdk.attach/sun.tools.attach.HotSpotAttachProvider.testAttachable(HotSpotAttachProvider.java:153)
at jdk.attach/sun.tools.attach.AttachProviderImpl.attachVirtualMachine(AttachProviderImpl.java:56)
at jdk.attach/com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:207)
at Log4jPatch.loadInstrumentationAgent(Log4jPatch.java:115)
at Log4jPatch.main(Log4jPatch.java:139)
cela signifie que votre JVM refuse toute aide parce qu'elle s'exécute avec -XX:+DisableAttachMechanism.