ElasticSearch6.8.13解决Log4j CVE-2021-44228漏洞
关于 Log4j 高危漏洞,有必要优先关注 Elastic 官方的综合研判
elasticsearch-analysis-ik 分词器下载
前言
漏洞发布之后,公司开始对所有服务器应用进行扫描,对使用了受影响版本的应用通知进行修改升级。
由于我们的系统使用Ruoyi搭建,SpringBoot版本用的是2.2.13.RELEASE,该版本依赖的ElasticSearch版本是6.8.13,所以我们用的ElasticSearch也是6.8.13,在ElasticSearch的lib目录下就引用有log4j-api-2.11.1.jar、log4j-core-2.11.1.jar、log4j-1.2-api-2.11.1.jar。
寻找解决方案
1 缓解方案
首先我是找到了上面 关于 Log4j 高危漏洞,有必要优先关注 Elastic 官方的综合研判 这篇文章
根据上面说的方案二,我在ElasticSearch6.8.13\config\jvm.options配置文件总添加了配置
# log4j漏洞
-Dlog4j2.formatMsgNoLookups=true
并且在ElasticSearch6.8.13\lib\log4j-core-2.11.1.jar中 org.apache.logging.log4j.core.lookup.JndiLookup.class
类删除
完成之后测试的时候也都没有问题,这也是Log4j官方给出的缓解措施
但是我们扫描的是jar包,所以这样也是没办法通过扫描
2 升级到 ElasticSearch6.8.21
官方在12月14号的时候发布了 ElasticSearch6.8.21和ElasticSearch7.16.1版本,但是我下载下来看了他上面也是像我缓解措施里面的方案一样,6.8.21版本中log4j三个jar包依然存在
升级过程中还遇到了一个问题,我们的服务使用的分词器有Ik-Analysis中文分词器,我去作者的GitHub上并没有找到对于版本的分词器,所以我下载了6.8.20分词器使用,然而并不行,启动不了。
可能是由于ElasticSearch6.8.21刚发布的缘故,索性在我提了Issues之后作者很快就发布了对应版本的Ik-Analysis分词器
但是这个方案依然没办法通过安全扫描,官方说会尽快发布ElasticSearch6.8.22会解决这个问题,也可以等发布之后再看看
3 升级Log4j
最后想说尝试一下直接替换lib下log4j的jar包为不受这个bug影响的版本
从Apache Log4j 官方下载下载了apache-log4j-2.16.0-bin.zip,从里面复制对应的jar包到ElasticSearch\lib目录下,删除原来版本的jar包
替换完成之后重启测试,功能都还正常
最终使用了这个方案,前面两个方案也是可以的,等之后ElasticSearch发布新版本彻底解决这个问题之后可以考虑重新升级