
एक चल रहे JVM प्रक्रिया में CVE-2021-44228 (Log4j RCE भेद्यता) को ठीक करने के लिए एक एजेंट तैनात करता है
इस टूल का आगे का विकास corretto/hotpatch-for-apache-log4j2 पर जारी रहेगा।
इस परियोजना को साझा करने, टिप्पणी करने, आज़माने और योगदान देने के लिए धन्यवाद!
यह एक सरल टूल का POC (प्रूफ ऑफ कॉन्सेप्ट) है जो चल रही JVM प्रक्रिया में एक Java एजेंट इंजेक्ट करता है। एजेंट सभी लोड किए गए org.apache.logging.log4j.core.lookup.JndiLookup इंस्टेंस के lookup() मेथड को बिना शर्त स्ट्रिंग "Patched JndiLookup::lookup()" लौटाने के लिए पैच करेगा। इससे Java प्रक्रिया को पुनरारंभ किए बिना Log4j में CVE-2021-44228 रिमोट कोड एक्सेक्यूशन भेद्यता को ठीक किया जाना चाहिए।
यह वर्तमान में केवल JDK 8 और 11 के साथ परीक्षण किया गया है!
अस्वीकरण: यह कोड उपयोगी होने की आशा में प्रदान किया गया है, लेकिन बिना किसी वारंटी के!
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>
यदि आपको इस प्रकार की त्रुटि मिलती है:
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)
इसका मतलब है कि आपकी JVM किसी भी प्रकार की सहायता से इनकार कर रही है क्योंकि यह -XX:+DisableAttachMechanism के साथ चल रही है।