如何修补 Log4j2 0-day 漏洞
How to patch Log4j2 0-day exploit
我们正在使用 Java 作为我们使用 log4j2 库的服务之一。截至 2021 年 12 月 10 日,已发现利用 log4j2 为 Java 执行远程代码的漏洞。我想知道解决这个问题的最佳方法是什么?只使用另一个 Java 日志库是否合适?或者是否有 log4j2 的配置,这样我们就不必经历更改日志库的所有麻烦?
我们应该将 log4j 升级到版本 2.17.0
(在 mvnrepository.com
). As per the security notes (logging.apache.org
) 可用,该漏洞已在 2.15.0
中修复。但是,在 2.15.0
中还有另外两个漏洞,分别在 2.16.0
和 2.17.0
中进行了修补。
如果升级(当前)不是一个选项,安全说明还列出了缓解漏洞利用的操作:
Mitigation: In releases >=2.10, this behavior can be mitigated by setting either the system property log4j2.formatMsgNoLookups
or the environment variable LOG4J_FORMAT_MSG_NO_LOOKUPS
to true
. For releases from 2.0-beta9 to 2.10.0, the mitigation is to remove the JndiLookup
class from the classpath: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
.
如果我们使用 spring-boot-starter-logging
且没有额外的配置,我们不会受到影响。有关详细信息,请参阅 spring-boot infromation on the issue (spring.io
).
同样,我们在使用 quarkus 时不受影响,只要我们不显式添加 log4j
依赖项。参见 the corresponding github issue (github.com
)
我们正在使用 Java 作为我们使用 log4j2 库的服务之一。截至 2021 年 12 月 10 日,已发现利用 log4j2 为 Java 执行远程代码的漏洞。我想知道解决这个问题的最佳方法是什么?只使用另一个 Java 日志库是否合适?或者是否有 log4j2 的配置,这样我们就不必经历更改日志库的所有麻烦?
我们应该将 log4j 升级到版本 2.17.0
(在 mvnrepository.com
). As per the security notes (logging.apache.org
) 可用,该漏洞已在 2.15.0
中修复。但是,在 2.15.0
中还有另外两个漏洞,分别在 2.16.0
和 2.17.0
中进行了修补。
如果升级(当前)不是一个选项,安全说明还列出了缓解漏洞利用的操作:
Mitigation: In releases >=2.10, this behavior can be mitigated by setting either the system property
log4j2.formatMsgNoLookups
or the environment variableLOG4J_FORMAT_MSG_NO_LOOKUPS
totrue
. For releases from 2.0-beta9 to 2.10.0, the mitigation is to remove theJndiLookup
class from the classpath:zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
.
如果我们使用 spring-boot-starter-logging
且没有额外的配置,我们不会受到影响。有关详细信息,请参阅 spring-boot infromation on the issue (spring.io
).
同样,我们在使用 quarkus 时不受影响,只要我们不显式添加 log4j
依赖项。参见 the corresponding github issue (github.com
)