最近发现了一个critical log4j vulnerability。
我想升级当前Solr示例使用的log4j,因此我使用checked here。但是,我在“/server/resources/”文件夹中没有看到log4j.properties
文件。我看到的只是:
- jetty-logging.properties
- log4j2.xml
- log4j2-console.xml
这些文件都不包含版本。因此,要升级,下载最新版本的log4j并覆盖文件夹“\solr-8.10.1\server\lib\ext”中的现有jar文件是否安全?或者,推荐的升级步骤是什么?
7条答案
按热度按时间ohtdti5x1#
您指向的链接是Solr的旧版本(6.6而不是8.10.1)。正确的版本是https://solr.apache.org/guide/8_10/configuring-logging.html,其中提到使用log4j 2。
文件log4j2.xml(甚至是log4j.properties)配置日志本身,而不是log4j的版本,所以更新该文件是无关紧要的。
以下是项目页面的建议:
2021年12月10日,Apache Solr受到Apache Log4J CVE-2021-44228的影响
...
**说明:**Apache Solr 8.11.1之前的版本使用的捆绑版本的Apache Log4J库易受RCE攻击。有关全部影响和其他详细信息,请参阅Log4J安全页。
...
**缓解措施:**以下任何措施都足以防止Solr服务器出现此漏洞:
您所建议的(覆盖文件夹“\solr-8.10.1\server\lib\ext”中的现有jar)看起来像是第二种方法,所以它可能会工作得很好。
bnlyeluc2#
用lib/ext中相应的2.15版本替换所有的jar,然后重新启动solr。看起来可以工作了。
ou6hu8tu3#
我在我的/opt/solr-7.4.0/server/lib/ext文件夹中将我所有的log4j jar从2.11更新到2.15,我没有看到任何问题。
bsxbgnwa4#
the new CVE
SOLR_OPTS
是不够的。升级到2.17似乎是最好的选择。下面是对我们有效的方法。pu82cl6c5#
对于Solr版本8.6.4,我现在通过简单地交换“Solr\server\lib\ext”下的5个log4j*.jar文件来更新log4j 2 2.16。此外,我还必须将slf4j-api.jar更新到版本1.7.24。这似乎是开箱即用的。
下载链接:
q3aa05256#
缓解措施:以下任何一项都足以防止Solr服务器出现此漏洞:
参考:https://solr.apache.org/security.html#apache-solr-affected-by-apache-log4j-cve-2021-44228
在我的例子中,下面的jar受到了影响,并被直接来自Apache的最新包所替换。
dgjrabp27#
如果您将Solr作为一个docker运行,您可以做的是在从jar中删除
JndiLookup.class
之后,挂载Solr映像中使用的相同的log4j-core版本。让我来介绍一下我使用过的步骤。
查找/ -名称“log4j-core-*.jar”
prometheus-exporter
路径,剩下的是server/lib/ext/
路径log4j-detector-2021.12.16.jar
文件下载到一个可访问的位置,并对log4j-core jar文件运行命令。java -jar log4j-检测器-2021.12.16.jar 8.4.1-扩展名〉hits_8.4.1_扩展名. txt
然后,您将得到如下输出,表示它易受攻击。
/ext/log4j-core-2.11.2.jar文件中包含的日志文件的大小〉= 2.10.0***:-(
JndiLookup.class
一个日志文件,它是一个日志文件,它是一个日志文件,它是一个日志文件。
/ext/log4j-core-2.11.2.jar包含Log4J-2.x〈= 2.0-beta 8 * 潜在安全 *:-|(或者您是否已经删除了JndiLookup.class?)
这意味着JndiLookup.class删除已成功完成。
卷数:
我个人的偏好是使用
SOLR_OPTS
和环境变量更新属性,因为它很好很干净。