6-25

Log4j 如何绕过 trustURLCodebase

trustURLCodebase 是什么?

JNDI(Java Naming and Directory Interface)中,trustURLCodebase 是一个非常关键的 JVM 参数。它的作用是:

  • 当 JNDI 客户端从远程服务器(例如 RMI 或 LDAP)获取一个 Java 对象时,如果这个对象在本地不存在,JNDI 客户端会根据远程服务器提供的 codebase URL,从远程下载并加载这个对象
  • trustURLCodebase 这个参数决定了是否信任这个远程的 codebase URL
    • true(默认值,在 JDK 8u191 之前):JVM 会无条件地信任并加载远程的代码
    • false(默认值,在 JDK 8u191 之后):JVM 不会加载远程的代码,除非该代码被签名或来自于可信的本地路径