KubeSphere 对 Apache Log4j 2 远程代码执行最新漏洞的修复方案
Apache Log4j 2 是一款开源的日志记录工具,被广泛应用于各类框架中。近期,Apache Log4j 2 被爆出存在漏洞,漏洞现已公开,本文为 KubeSphere 用户提供建议的修复方案。
此次漏洞是由于 Log4j 2 提供的 lookup 功能造成的,该功能允许开发者通过一些协议去读取相应环境中的配置。但在实现的过程中,并未对输入进行严格的判断,从而造成漏洞的发生。由于大量的软件都使用了 Log4j 2 插件,所以大量的 Java 类产品均被波及,包括但不限于 Apache Solr、srping-boot-strater-log4j2、Apache Struts2、ElasticSearch、Dubbo、Redis、Logstash、Kafka...更多组件可以参考 Log4j 2 相关文档。
受影响的 Log4j 版本为 Apache Log4j 2.x < 2.15.0-rc2。目前官方发布了 Apache 2.15.0-rc2 版本对该漏洞进行了修复,但是该版本并非正式发行版,故存在不稳定的因素,如要升级建议对相关数据进行备份。
同时,也提供了三种方法对漏洞进行补救,为
- 将系统环境变量
FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS
设置为true
- 修改配置
log4j2.formatMsgNoLookups=True
- 修改 JVM 参数
-Dlog4j2.formatMsgNoLookups=true
以下三种解决方法,您可以任选其中一种进行参考。
方法一:修改系统环境变量
由于 KubeSphere 默认使用了 ElasticSearch 收集日志,所以也应该在 KubeSphere 修改相应的配置来对漏洞进行修复。以下说明如何在 KubeSphere 中进行相应的操作对 ElasticSearch 进行修复。
将系统环境变量
FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS设置为 True,为此,我们需要修改 ElasticSearch 的 Yaml 文件,因为它是一个 StatefulSet 文件,所以需要进行如下修改:
kubectl edit statefulset elasticsearch-logging-data -n kubesphere-logging-system kubectl edit statefulset elasticsearch-logging-discovery -n kubesphere-logging-system
在这两个 Yaml 文件中插入环境变量设置:
env: - name: FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS value: "true"
方法二:修改 Log4j 2 配置
另外,您也可以修改配置
log4j2.formatMsgNoLookups=True,您可以执行如下命令:
kubectl edit configmaps elasticsearch-logging -n kubesphere-logging-system
然后插入上面所提到的配置:
log4j2.properties: |- status=error appender.console.type=Console appender.console.name=console appender.console.layout.type=PatternLayout appender.console.layout.pattern=[%d{ISO8601}][%-5p][%-25c{1.}] %marker%m%n rootLogger.level=info rootLogger.appenderRef.console.ref=console logger.searchguard.name=com.floragunn logger.searchguard.level=info # 插入此行 log4j2.formatMsgNoLookups=true
注意:
- 修改后请注意相关配置是否挂载进去,如果没有挂载进去,请重启 Pod。
- 如果您将 KubeSphere Logging 组件重新安装,ks-installer 可能会导致该 ConfigMap 的配置被重置,需要再参考方法二手动配置一遍,或者采取方法一,设置系统环境变量
FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS 为 true。
方法三:修改 ElasticSearch 的 JVM 参数
除了上述两种方法,您还可以选择在 KubeSphere 集群中的 ElasticSearch 添加配置文件,单独配置 JVM 参数,详见 ElasticSearch 公告声明。
相关参考
- 关于 Apache Log4j 2 远程代码执行最新漏洞的风险提示: https://itsc.nju.edu.cn/7a/42/c41947a555586/page.htm
- Artifacts using Apache Log4j Core:https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core/usages?p=1
本文由博客一文多发平台 OpenWrite 发布!
- Apache Struts最新漏洞 远程代码执行漏洞预警 2018年11月08日
- struts2.2以前版本远程执行任意代码漏洞修复方案
- Struts2高危远程代码执行(S2-037)漏洞及修复方案
- ElasticSearch Groovy脚本远程代码执行漏洞检测脚本和修复方案
- struts2之高危远程代码执行漏洞,可造成服务器被入侵,下载最新版本进行修复
- ThinkPHP 小于5.0.24 远程代码执行高危漏洞 修复方案
- ThinkPHP 小于5.0.24 远程代码执行高危漏洞 修复方案
- struts2之高危远程代码执行漏洞,可造成服务器被入侵,下载最新版本进行修复
- PHP-CGI远程任意代码执行漏洞(CVE-2012-1823)修复方案
- Apache Flink 任意 Jar 包上传导致远程代码执行漏洞复现问题(漏洞预警)
- 齐博cms最新SQL注入网站漏洞 可远程执行代码提权
- Memcached远程代码执行漏洞预警与检测修复
- Struts 2最新0day破坏性漏洞(远程任意代码执行)等的重现方法
- [CVE-2013-2251] Apache Struts 2远程代码执行漏洞复现(第四弹)
- Struts2 S2-016,S2-017远程代码执行漏洞解决,修复
- Struts 2最新0day破坏性漏洞(远程任意代码执行)等的重现方法
- Struts 2最新0day破坏性漏洞(远程任意代码执行)等的重现方法
- [CVE-2012-0392] Apache Struts 2远程代码执行漏洞复现(第五弹)
- Struts2再爆远程命令执行漏洞!Struts2-048 Poc Shell及防御修复方案抢先看!
- Apache Tomcat CVE-2017-12615远程代码执行漏洞分析