B i M A P

Elastic|Apache Log4j2 Remote Code Execution (RCE) Vulnerability - CVE-2021-44228 - ESA-2021-31

ELK Logo

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






延伸閱讀
winstonlu的大頭照
ELK 達人

我們致力於 ELK 的各種應用,協助企業建置相關服務。我們也提供基於 ELK 的各種解決方案,有任何問題,歡迎加入我們的官方 Line,或來信詢問,期待與您面對面的機會。