Elastic 前言
Log4j 的 Github 公開了一個影響 Apache Log4j 2 多個版本的高嚴重性漏洞 (CVE-2021-44228)。該漏動影響了 Apache Log4j 2 的 2.0 到 2.14.1 版本。
Elasticsearch 建議參數調整
2021.12.13 所發布的 7.16.1 版本,不會升級 Log4j 至 2.16.0,而是透過設定 JVM 的 -Dlog4j2.formatMsgNoLookups=true 來補救,並移除了一些易受攻擊的 JndiLookup 類別程式。
但某些漏洞偵測軟體,可能還是會認為有潛在風險,但是 Elastic 目前的測試認為,上述的補救方式,已具有一定程度的保護力。
建議做法:
vim /etc/elasticsearch/jvm.options
於最後新增:
-Dlog4j2.formatMsgNoLookups=true
重新啟動每一個 Elasticsearch 節點:
systemctl restart elasticsearch
升級至 7.16.1 可以參考 es-rolling-upgrade 做法:
https://blog.bimap.com.tw/2021/07/06/elasticsearch-rolling-upgrade
Logstash 建議參數調整或更新
建議用戶可以將版本升級至 7.16.1,此版本的 Log4j 已升級至 2.15。如前言所述,雖然 Log4j 2 已發布了 2.16.0 版本,但並不影響 Elastic 建議的調整方式。
線上更新:
yum update logstash
離線環境:
重新安裝,將版本號修正為 7.16.1:
https://blog.bimap.com.tw/2021/04/29/logstash-offline-install
如果 Logstash 無法升級的話,可採用以下官方建議作法:
這邊需要注意的是 -Dlog4j2.formatMsgNoLookups=true,這種 JVM 的補救方式,並不能有效的解決於 Logstash 中的漏洞,如果無法升級 Logstash,則需要從 Log4j 2 的核心 jar 檔中刪除 JndiLookup 類別,使用的指令為:
zip -q -d <LOGSTASH_HOME>/logstash-core/**/*/log4j-core-2.* org/apache/logging/log4j/core/lookup/JndiLookup.class
並重新啟動 Logstash
systemctl restart logstash