Glavo的回答
GitHub – Glavo/log4j-patch
糊了一个简单有效的 patch 出来,将它附加在类路径的最前面即可禁用 JNDI 查找,阻止这个 漏洞 。适用于 Log4j2 所有版本,对 Java 版本没有要求。
原理就是提供了一个空的 JndiLookup 用来覆盖 Log4j2 中的类,Log4j2 处理了加载失败的情况,会直接禁用 JNDI 查找,以此解决了这个问题。
这是一个非侵入式的修补器,可以用来修补第三方无法修改 代码 的程序,譬如 Minecraft。这里提供了一个 javaagent,只需要添加 -javaagent:log4j-patch-agent-1.0.jar 就可以自动替换。
这个也已经发布到 Maven Central 上了,自己的项目的话,将它作为第一个依赖项添加也能解决这个问题。
dependencies { implementation("org.glavo:log4j-patch:1.0")}