我们的一个服务使用了Java,它使用了log4j2库。截至2021年12月10日,发现了使用log4j2执行Java远程代码的漏洞。我想知道解决此问题的最佳方法是什么?是否适合改用另一个Java日志库?或者是否存在log4j2的配置,以便我们不会“You don“你不必麻烦地更换日志库吗?
cngwdvgl1#
我们应该将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中修补。安全说明还列出了在(当前)无法进行升级的情况下缓解漏洞攻击的操作:缓解措施:在2.10版本中,可以通过将系统属性log4j2.formatMsgNoLookups或环境变量LOG4J_FORMAT_MSG_NO_LOOKUPS设置为true来缓解此行为。对于从2.0-beta 9到2.10.0的版本,缓解措施是从类路径中删除JndiLookup类: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依赖项,我们就不会受到影响。
2.17.0
mvnrepository.com
logging.apache.org
2.15.0
2.16.0
log4j2.formatMsgNoLookups
LOG4J_FORMAT_MSG_NO_LOOKUPS
true
JndiLookup
zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
spring-boot-starter-logging
spring.io
log4j
1条答案
按热度按时间cngwdvgl1#
我们应该将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
中修补。安全说明还列出了在(当前)无法进行升级的情况下缓解漏洞攻击的操作:
缓解措施:在2.10版本中,可以通过将系统属性
log4j2.formatMsgNoLookups
或环境变量LOG4J_FORMAT_MSG_NO_LOOKUPS
设置为true
来缓解此行为。对于从2.0-beta 9到2.10.0的版本,缓解措施是从类路径中删除JndiLookup
类: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
依赖项,我们就不会受到影响。