分佈式 | log4j2 漏洞修復方案

作者:鮑鳳其
愛可生 dble 團隊開發成員,主要負責 dble 需求開發,故障排查和社區問題解答。少說廢話,放碼過來。
本文來源:原創投稿
*愛可生開源社區出品,原創內容未經授權不得隨意使用,轉載請聯繫小編並註明來源。

dble 運行依賴許多組件的 jar 包,當遇到某個組件有漏洞時,需要緊急修復。
Apache Log4j2
安全漏洞說明:https://nosec.org/home/detail/4917.html

修復方案

⚠️:方案1可實施,截止至北京時間2021年12月14日11時,log4j 官方已經發布 2.16.0 版本,相關 release notes:https://github.com/apache/logging-log4j2/blob/rel/2.16.0/RELEASE-NOTES.md
⚠️:下面提供的方案2,3和4方式效果一致,可任取一種,推薦使用第2種,全版本 dble 都適用,影響面確定

⚠️:方案2和3是臨時繞過方案,,不排除有其他問題

1. 升級 log4j2 組件

dble 版本:2.19.07.x - 3.21.10.x版本,2.19.07.x之前的版本需要自行嘗試替換方案,官方不再提供支持
影響:需要重啓 dble
步驟:

1.1 停止 dble 

1.2 將 dble 服務器上 log4j 的 jar 包進行備份並 mv 至 /tmp/ 目錄下
/path/to/dble/lib 下有四個 jar 包分別是:(操作前需要確認一下)
  • log4j-1.2-api-2.13.1.jar
  • log4j-api-2.13.1.jar
  • log4j-core-2.13.1.jar
  • log4j-slf4j-impl-2.13.1.jar

執行下面的操作:

mv log4j-1.2-api-2.13.1.jar log4j-1.2-api-2.13.1.jar.bak
mv log4j-1.2-api-2.13.1.jar.bak /tmp/
1.3 將 log4j 2.16.0 版本的相關 jar 包,上傳到該路徑下/path/to/dble/lib,並變更權限

參考鏈接:https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-core/2.16.0/ ,其他jar在此網站上查找

1.4 重複1.2,1.3步驟升級其餘三個jar包
1.5 啓動dble

2  添加配置

dble 版本:理論上全版本 dble 適配
影響:需要重啓 dble
步驟:
在 dble 配置文件 /path/to/dble/conf 下添加配置文件 log4j2.component.properties

修改文件權限:

添加如下配置:

log4j2.formatMsgNoLookups=True

驗證方式:

開發環境驗證該變量重啓後被加載,不重啓情況下,不會被加載。

3. 修改 jvm 參數

dble 版本:適用於 dble 版本 < 3.20.07.0
3.20.07.0及之後的 dble 版本由於對 JVM 參數進行了限制,因此不支持此種方式,會在近期修復。
影響:需要重啓 dble
步驟:
在 dble 配置文件 /path/to/dble/conf/wrapper.cof 中添加如下配置,並重啓 dble 。
配置:

原環境中是否存在 wrapper.java.additional 的參數,下面配置中的14在原環境中按需替換

wrapper.java.additional.14=-Dlog4j2.formatMsgNoLookups=true

執行以下命令判斷是否使用該參數啓動:

ps aux|grep dble|grep 'formatMsgNoLookups'

4. 設置系統環境變量 FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS 設置 爲 true

不推薦


文章推薦:

分佈式 | 關於 druid 連接池參數問題

分佈式 | 使用 Arthas 熱更新 dble

分佈式 | Prepare Statement 協議遊標可行性



社區近期動態




本文關鍵字:#dble# #log4j# #log4j2# #漏洞# #安全#
  點一下“閱讀原文”瞭解更多資訊

本文分享自微信公衆號 - 愛可生開源社區(ActiontechOSS)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章