12 月 10 日凌晨,Apache 開源專案 Log4j2 的遠端程式碼執行漏洞細節被公開,漏洞威脅等級為:嚴重。
Log4j2 是一個基於 Java 的日誌記錄工具。它重寫了 Log4j 框架,引入了大量豐富特性,讓使用者可以控制日誌資訊輸送的目的地為控制檯、檔案、GUI 元件等。同時通過定義每一條日誌資訊的級別,讓使用者能夠更加細緻地控制日誌的生成過程。
Log4j 是目前全球使用最廣泛的 java 日誌框架之一。該漏洞還影響著很多全球使用量前列的開源元件,如 Apache Struts2、Apache Solr、Apache Druid、Apache Flink 等。因為該漏洞利用方式簡單,一旦有攻擊者利用該漏洞,就可以在目標伺服器上執行任意程式碼,給被攻擊者造成極大危害。
漏洞細節
此次漏洞主要是 Log4j2 內含的 lookup 功能存在 JNDI 注入漏洞,該功能可以幫助開發者通過一些協議讀取相應環境中的配置。漏洞觸發方式非常簡單,只要日誌內容中包含關鍵詞 ${,那麼這裡麵包含的內容就可以作為變數進行替換,攻擊者無需任何許可權,可以執行任意命令。
此次漏洞影響的版本為:Apache Log4j 2.x <= 2.14.1
同時如果您使用了以下應用,也會被此次漏洞影響:
-
Spring-Boot-strater-log4j2
-
Apache Struts2
-
Apache Solr
-
Apache Flink
-
Apache Druid
-
ElasticSearch
-
flume
-
dubbo
-
logstash
-
kafka
漏洞修復
目前廠商已經發布了新版本 log4j-2.15.0-rc2,該版本已經修復了漏洞。希望大家能夠儘快升級到新版本。
官方連結:https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2
如果您暫時不方便進行版本升級,您也可以通過以下方法進行應急處理,並在方便的時候儘快完成版本升級:
-
修改 jvm 引數 -Dlog4j2.formatMsgNoLookups=true
-
修改配置 log4j2.formatMsgNoLookups=True
-
將系統環境變數 FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS 設定為 true
無論是前年 Apach Shiro 的 cookie 持久化引數 rememberMe 加密演算法存在漏洞,還是去年 5 月的 Fastjson 遠端程式碼執行漏洞通告。網路安全似乎總是存在各種各樣的問題,但是發現漏洞並修復漏洞本身就是對安全進行的一次升級。停止不動的安全方式很快就會被攻破,只有持續不斷地更新與升級才是真正的網路安全。