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 版本為 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 釋出!