乐趣区

关于云计算: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

留神:

  1. 批改后请留神相干配置是否挂载进去,如果没有挂载进去,请重启 Pod。
  2. 如果您将 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…
  • Artifacts using Apache Log4j Core:https://mvnrepository.com/art…

本文由博客一文多发平台 OpenWrite 公布!

退出移动版