⚠️ Log4j 0day CVE 漏洞警示及修复指南

精华修改于2021/12/204824 浏览公告更新
(2021.12.19)我们收到了有关 CVE-2021-45105 的漏洞警示,建议您升级 Log4j2 版本至 2.17.0 及以上以规避此风险。对于主要的受支持服务端,请关注其通知界面以确保新的漏洞已被修复
(2021.12.17)我们收到了有关 CVE-2021-45046 的漏洞警示,原 Log4j2 CVE-2021-44228 漏洞补丁仍有被绕过的风险,建议您升级 Log4j2 版本至 2.16.0 及以上以规避此风险。对于主要的受支持服务端,请关注其通知界面以确保新的漏洞已被修复
影响范围
所有包含 Apache log4j2 2.0-2.15.0-rc1 版本依赖库的服务端(Minecraft 1.7.X 至 Minecraft 1.18.X)
BungeeCord 不受影响,因为 BungeeCord 不使用 log4j,但其下游 Waterfall 受到影响,因为 Waterfall 引入了 log4j
可能的攻击方式
任何可能导致服务端 Logger 记录指定关键词的行为,包括在不进入服务器进行任何操作的情况下使用包含关键词游戏 ID 对服务器进行握手
可以导致的后果
远程代码执行
来自官方的漏洞修复建议
● 对于所有受到影响的 Vanilla 服务端
请遵照 Mojang 提供的漏洞修复建议修复漏洞: https://www.taptap.com/topic/19771511
● 对于其他受到影响的服务端
请检查本文末“服务端核心修复跟踪”部分是否已包含您所使用服务端核心的修补声明,如果包含,请遵照这些服务端核心的要求升级至最新的构建版本;如果未包含,则请依照下文的临时修复方案修补您的服务端核心
临时修复方案
● 手动替换 log4j2 版本为 2.15.0-rc2 可能不适用于某些旧版服务端核心
log4j-api:
● 禁用 LDAP 端口(TCP/UDP 386/636) 可能被绕过
● 添加 -Dlog4j2.formatMsgNoLookups=true Java 命令行参数(感谢 @jiongjionger) 仅可用于 log4j2 版本 2.10+
JavaAgent 解决方案: https://www.mcbbs.net/thread-1283155-1-1.html (感谢 @VeroFess)
● Bukkit Plugin 解决方案: https://www.mcbbs.net/thread-1283195-1-1.html (感谢 @caoli5288)
● Bukkit Plugin 解决方案: https://www.mcbbs.net/thread-1283178-1-1.html (感谢 @yumc)
● Bukkit Plugin 解决方案: https://www.mcbbs.net/thread-1283271-1-1.html (感谢 @Bowser)无需前置,推荐
Forge Mod 解决方案:https://www.mcbbs.net/thread-1283228-1-1.html (感谢 @Bowser)无需前置,推荐
手把手教你修漏洞™
● 对于 1.18+ 的所有服务端(Vanilla,Spigot,Paper等)
有校验,不好改,等修复(有兴趣的话可以前往服务端核心中的 META-INF/libraries.list 文件,修改 log4j 相关的三个 jar 路径及其 SHA256 签名,然后将新的 jar 导入 libraries 文件的指定目录)
● 对于 1.18- 的 非 Paper(及其下游) 服务端
使用压缩软件打开服务端核心和log4j-core,删除前者 org\apache\logging\log4j\core 文件夹,将后者同样路径中的 core 文件夹替换进去;然后删除org\apache\logging\log4j下的其他文件,将 log4j-api 中同名目录的所有文件替换进去即可
● 对于 1.18- 的 Paper(及其下游) 服务端
使用压缩软件打开 .\cache\patched_X.X.X.jar 和log4j-core,删除前者 org\apache\logging\log4j\core 文件夹,将后者同样路径中的 core 文件夹替换进去;然后删除org\apache\logging\log4j下的其他文件,将 log4j-api 中同名目录的所有文件替换进去;然后修改开服脚本,将服务端 jar 指向 .\cache\patched_X.X.X.jar 而非原来的 paperclip jar
服务端核心修复跟踪
● Mohist 声明其 1.12.2,1.16.5 和 1.18.x 分支最新构建已修复此漏洞(
● CatServer 声明其最新构建(21.12.10)已修复此漏洞(https://github.com/Luohuayu/CatServer/commit/9c1e882fb56ffd56fbb85429c09733dcd512ebec)
● Paper 声明其 1.16.5(#790),1.17.1(#398) 和 1.18(#64) 分支最新构建已修复此漏洞(
● Waterfall 声明其最新构建(#466)已修复此漏洞(https://github.com/PaperMC/Waterfall/commit/f45703fc46c8d8c35fab745181fce6f9f887be5d)
● Spigot 发布了一些超出计划的安全更新,以下版本的 Spigot 将得到修复:
1.8.8 (BuildTools 版本 582-a)
1.9.4 (BuildTools 版本 849-a)
1.10.2 (BuildTools 版本 986-a)
1.11.2 (BuildTools 版本 1251-a)
1.12.2 (BuildTools 版本 1573-k)
1.13.2 (BuildTools 版本 2148-d)
1.14.4 (BuildTools 版本 2502-c)
1.15.2 (BuildTools 版本 2703-a)
1.16.5 (BuildTools 版本 3096-a)
1.17.1 (BuildTools 版本 3284-a)
1.18.1 (所有未来版本)
● Arclight 声明其 1.16 和 1.18 分支已修复此漏洞(
● Forge 声明其多个版本已包含针对此次 log4j 漏洞的热更新,更多旧版本分支可能需要更多的工作以修复,推荐的版本:
1.18-38.0.17
1.17.1-37.1.1
1.16.5-36.2.20
1.15.2-31.2.56
1.14.4-28.2.24
1.13.2-25.0.221
1.12.2-14.23.5.2856
● Fabric 建议使用 1.17 和 1.18 服务端的服主立即更新服务端的 Fabric Loader 为最新版本,或尽可能地更新至 Minecraft 1.18.1,如果不具备这些条件,则请遵照 Mojang 官方博文(见上)对漏洞进行修复
更新
● 12.10 10:45 log4j2 版本 2.15.0-rc1 对该漏洞的修复存在被绕过的可能,请更换至 log4j2 版本 2.15.0-rc2
● 12.10 11:04 更新 Arclight 服务端漏洞修复跟踪
● 12.10 19:50 更新 Forge 漏洞修复跟踪
● 12.11 00:52 新增 “来自官方的漏洞修复建议”
● 12.11 00:59 更新 Fabric 漏洞修复跟踪
● 12.17 18:03 我们收到了有关 CVE-2021-45046 的漏洞警示,原 Log4j2 CVE-2021-44228 漏洞补丁仍有被绕过的风险,建议您升级 Log4j2 版本至 2.16.0 及以上以规避此风险。对于主要的受支持服务端,请关注其通知界面以确保新的漏洞已被修复
来自MCBBS: @贺兰兰
19
4
7