
Setzt einen Agenten ein, um CVE-2021-44228 (Log4j RCE-Schwachstelle) in einem laufenden JVM-Prozess zu beheben.
Die weitere Entwicklung dieses Tools wird unter corretto/hotpatch-for-apache-log4j2 fortgesetzt.
Vielen Dank für das Teilen, Kommentieren, Ausprobieren und Mitwirken an diesem Projekt!
Dies ist ein Proof-of-Concept eines einfachen Tools, das einen Java-Agenten in einen laufenden JVM-Prozess injiziert. Der Agent patcht die lookup()-Methode aller geladenen org.apache.logging.log4j.core.lookup.JndiLookup-Instanzen, sodass sie ohne Bedingungen den String "Patched JndiLookup::lookup()" zurückgibt. Dies sollte die CVE-2021-44228 Remote-Code-Ausführungsschwachstelle in Log4j beheben, ohne dass der Java-Prozess neu gestartet werden muss.
Dies wurde bisher nur mit JDK 8 und 11 getestet!
Haftungsausschluss: dieser Code wird in der Hoffnung bereitgestellt, dass er nützlich ist, jedoch ohne jegliche Gewährleistung!
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>
Wenn Sie einen Fehler wie diesen erhalten:
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)
bedeutet dies, dass Ihre JVM jegliche Hilfe verweigert, weil sie mit -XX:+DisableAttachMechanism läuft.