原因:文章編寫完畢,希望大家能檢查有無不合規之處。
注意:中文Wiki的移動頁面需要在討論批准後進行,大量移動由機械人完成。
請不要使用複製粘貼來移動頁面,因為這樣會丟失所有的編輯歷史。
該頁面的內容不代表Mojang Studios或Minecraft Wiki的官方意見。
本教學介紹了修復Apaches Log4j2相關錯誤的方法。
錯誤緣由
開源的Java日誌記錄工具Apaches Log4j2被曝出存在高危遠程代碼執行錯誤。由於Minecraft: Java版的大部分版本使用了使用了該日誌記錄工具,極大多數Minecraft玩家都可能因該錯誤而遭受攻擊。
錯誤危害
攻擊者可利用該錯誤在未經授權的情況下在玩家電腦上執行任意指令,其中不乏下載病毒、佔用系統資源、竊取私隱等而已命令。由於該錯誤存在範圍廣、利用門檻低,會給玩家帶來極高的安全隱患。
影響範圍
- Minecraft: Java版 13w39a~1.18.1-rc2全部用戶端與伺服器端,包括:
- 原版用戶端與伺服器端
- 安裝了模組的用戶端與伺服器端
- Paper、Spigot等大多數第三方伺服器端
- 其他滿足上述範圍的Java版用戶端與伺服器端。
以下版本不受影響:
- Minecraft: 基岩版
- Minecraft: Java版 13w38c及以下版本
- Minecraft: Java版 1.18.1-rc3及以上版本
- BungeeCord伺服器端
修複方式
原版用戶端
- Minecraft官方啟動器
- 關閉遊戲、重新啟動啟動器。已修復的版本會自動下載。
- HMCL
- 關閉遊戲,將啟動器更新到3.4.211及以上版本。
- PCL2
- 關閉遊戲,將啟動器更新到2.2.7及以上版本。
- BakaXL
- 關閉遊戲,將啟動器更新到最新版本。
- 其他啟動器
- 關閉遊戲,將啟動器更新到最新版本,並留意更新日誌中是否説明修復了此錯誤。如果沒有,請參照#臨時防禦方案修復。
模組載入器
- Fabric
- 將Fabric Loader更新到0.12.9及以上版本。
- Forge
- 1.18及以上版本的用户請將Forge更新到38.0.17及以上版本。
- 1.17.1及以下版本的Forge已不再安全,請修復啟動器,或參照#臨時防禦方案修復。
- 其他模組載入器
- 由於多數其他模組載入器已停更,它們都已不再安全,請修復啟動器,或參照#臨時防禦方案修復。
原版伺服器端
- 1.18
- 關閉伺服器端,升級到1.18.1,或者按照1.17的方法修復。
- 1.17
- 關閉伺服器端,在啟動腳本中加入JVM參數:
-Dlog4j2.formatMsgNoLookups=true - 1.12~1.16.5
- 關閉伺服器端,下載此檔案到伺服器的工作路徑。然後在啟動腳本中加入JVM參數:
-Dlog4j.configurationFile=log4j2_112-116.xml - 1.7~1.11.2
- 關閉伺服器端,下載此檔案到伺服器的工作路徑。然後在啟動腳本中加入JVM參數:
-Dlog4j.configurationFile=log4j2_17-111.xml
第三方伺服器端
- Paper、WaterFall、Velocity、Spigot
- 這些伺服器端均已發佈緊急更新,請關閉伺服器端,更新到最新版本。
- BungeeCord
- 不受影響,無需操作。
- 其他伺服器端
- 請先關閉伺服器端,然後參照MCBBS上的帖子修復。如果你使用的伺服器端沒有在帖子中列出,請將伺服器端更新到最新版本,並留意更新日誌中是否説明修復了此錯誤。如果沒有,請參照#臨時防禦方案修復。
臨時防禦方案
本段參考了火絨安全實驗室發佈的專欄:https://www.bilibili.com/read/cv14365632
- 如果可以,加入JVM參數:
-Dlog4j2.formatMsgNoLookups=true - 將系統環境變數
FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS設定為true
敬請參閱
- 官方網站上的公吿:"Important Message: Security vulnerability in Java Edition"
- MCBBS上的公吿翻譯:「重要訊息:Java 版中的安全錯誤」
- MCBBS上的伺服器修復指南:【2021.12.10】 Log4j 0day CVE 錯誤警示及修復指南
- 火絨安全實驗室的專欄:附修復建議| Apache Log4j 遠程代碼執行錯誤通吿