
Despliega un agente para corregir CVE-2021-44228 (Log4j RCE vulnerability) en un proceso JVM en ejecución
El desarrollo posterior de esta herramienta continuará en corretto/hotpatch-for-apache-log4j2.
¡Gracias por compartir, comentar, probar y contribuir a este proyecto!
Esta es una POC de una herramienta simple que inyecta un agente Java en un proceso JVM en ejecución. El agente parcheará el método lookup() de todas las instancias cargadas de org.apache.logging.log4j.core.lookup.JndiLookup para devolver incondicionalmente la cadena "Patched JndiLookup::lookup()". Esto debería solucionar la vulnerabilidad de ejecución remota de código CVE-2021-44228 en Log4j sin necesidad de reiniciar el proceso Java.
Esto ha sido probado actualmente solo con JDK 8 y 11.
Descargo de responsabilidad: este código se proporciona con la esperanza de que sea útil, pero sin ninguna garantía.
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 obtienes un error como:
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)
esto significa que tu JVM está rechazando cualquier tipo de ayuda porque se está ejecutando con -XX:+DisableAttachMechanism.