2021年12月9日,一个与Apache的Log4j库相关的严重漏洞被披露。The vulnerability is detailed here。在这个链接中提到了可能的缓解措施。我希望你能帮助我解决以下问题(如果我的问题听起来太琐碎,我提前道歉):
**缓解措施1:**将系统属性log4j2.formatMsgNoLookups或环境变量LOG4J_FORMAT_MSG_NO_LOOKUPS设置为true。这由2个不同的操作组成:
1.第一种方法是将log4j2.formatMsgNoLookups系统属性设置为TRUE。系统的属性是什么?在哪里?
1.或者,将环境变量LOG4J_FORMAT_MSG_NO_LOOKUPS设置为TRUE。从表面上看,这就像运行以下命令一样简单:export LOG4J_FORMAT_MSG_NO_LOOKUPS=true
。在不使用Log4j库的系统上创建该环境变量是否有问题?
**缓解措施2:**可以修改所有PatternLayout模式,以将消息转换器指定为%m{nolookups},而不仅仅是%m。也就是说,您必须使用%m{nolookups}
,而不是使用%m
,并且在所有PatternLayout模式中都是这样做的。In this place列出了Log4j库的可能配置文件。我设法找到了/usr/lib/appdynamics-php5/proxy/conf/logging/log4j2.xml,它包含如下所示的多行:<PatternLayout pattern="[%t] %d{DATE} %5p %c - %m%n"/>
。我猜它只是在那些需要运行此缓解措施的配置文件中,而不是在其他地方,对吗?
**缓解措施3:***从类路径中删除JndiLookup类。例如:zip -q -d log4j-core-.jar org/apache/logging/log4j/core/lookup/JndiLookup.class *.我在任何地方都找不到名为JndiLookup.class的文件。我想如果它不存在,您就不必查找任何其他内容,并且这种可能的缓解措施也不适用,对吗?
1条答案
按热度按时间pod7payv1#
除了您提到的第一个问题之外,还发布了https://access.redhat.com/security/cve/CVE-2021-45046。
缓解措施1未解决此问题。
我不确定缓解措施2,但由于它只是一种配置与缓解措施1相同效果的本地方法,因此我也认为它不能保护您免受此漏洞的影响。
缓解措施3应仍有效,与删除的JndiLookup.class一样,从Internet加载数据的类将丢失。但是,使用丢失类的攻击应引发异常。您的应用程序应健壮,不会因此崩溃。
目前最好的缓解措施是更新到log4j 2.17.0。始终保持最新的新闻和发布的新漏洞。将来可能会有新的漏洞发布,您必须再次更新到较新的版本。