ElasticSearch log4J漏洞修复
漏洞简介
Apache Log4j 2是一款优秀的Java日志框架。该工具重写了Log4j框架,并且引入了大量丰富的特性。该日志框架被大量用于业务系统开发,用来记录日志信息。由于Apache Log4j 2某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。
漏洞危害
漏洞利用无需特殊配置,攻击者可直接构造恶意请求,触发远程代码执行漏洞。
漏洞编号
(CNVD-2021-95914)
影响范围
Apache Log4j 2.x <= 2.15.0-rc1
解决方案
1、排查应用是否引入了Apache log4j-core Jar包,若存在依赖引入,且在受影响版本范围内,则可能存在漏洞影响。请尽快升级Apache Log4j2所有相关应用到安全 log4j-2.15.0 版本,地址 https://logging.apache.org/log4j/2.x/download.html
2、升级已知受影响的应用及组件,如 spring-boot-starter-log4j2/Apache Struts2/Apache Solr/Apache Druid/Apache Flink
3、临时缓解方案。
- 对于>=2.0-beta9 且 <=2.10.0 版本,将 JndiLookup 类从 classpath 中去除,例如 zip -q -d log4j-core-*.jar org /apache/logging/log4j/core/lookup/JndiLookup.class 。
- 对于大于2.10版本的Log4j,在jvm参数中添加 -Dlog4j2.formatMsgNoLookups=true或 环境变量 LOG4J_FORMAT_MSG_NO_LOOKUPS 为 True
- 系统环境变量中将FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS设置为true
- 建议JDK使用11.0.1、8u191、7u201、6u211及以上的高版本,可以在一定程度上限制JNDI等漏洞利用方式。
- 创建“log4j2.component.properties”文件,文件中增加配置“log4j2.formatMsgNoLookups=true”
- 限制受影响应用对外访问互联网
- WAF添加漏洞攻击代码临时拦截规则。
ElasticSearch解决方案
将elastic的lib目录中的log4j-core、log4j-api、log4j-1.2-api更新至2.16.0版本,直接替换jar包并重启es服务即可
wget https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-core/2.16.0/log4j-core-2.16.0.jar
wget https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-api/2.16.0/log4j-api-2.16.0.jar
wget https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-1.2-api/2.16.0/log4j-1.2-api-2.16.0.jar