
Distribuisce un agente per correggere CVE-2021-44228 (vulnerabilità RCE Log4j) in un processo JVM in esecuzione
Lo sviluppo futuro di questo strumento continuerà su corretto/hotpatch-for-apache-log4j2.
Grazie per aver condiviso, commentato, provato e contribuito a questo progetto!
Questo è un POC di un semplice strumento che inietta un agente Java in un processo JVM in esecuzione. L'agente modificherà il metodo lookup() di tutte le istanze caricate di org.apache.logging.log4j.core.lookup.JndiLookup per restituire incondizionatamente la stringa "Patched JndiLookup::lookup()". Questo dovrebbe correggere la vulnerabilità di esecuzione remota di codice CVE-2021-44228 in Log4j senza riavviare il processo Java.
Questo è stato attualmente testato solo con JDK 8 e 11!
Disclaimer: questo codice è fornito nella speranza che possa essere utile, ma senza alcuna garanzia!
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>
Se si riceve un errore come:
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)
questo significa che la tua JVM rifiuta qualsiasi tipo di aiuto perché è in esecuzione con -XX:+DisableAttachMechanism.