跳转到主要内容

关于 Log4j2 CVE-2021-44228 的 Minecraft 解决方案

Apache Log4j2 中发现远程代码执行漏洞,Log4j2 的 2.0 - 2.15.0-rc1 版本均受此漏洞影响; Log4j 1.x 也受此影响。

Minecraft Java 版 1.7 至 Minecraft 1.18-rc2 也受此漏洞影响。

Apache Log4j2 是什么


Apache Log4j2 是一款非常优秀的 Java 日志框架,它在各种 Java 应用中被广泛使用,比如我们常玩的 Minecraft。

简单来说就是用来记录日志的东西。

 

漏洞描述


此次漏洞是由于 Log4j2 提供的 lookup 功能造成的(不全是),该功能允许开发者通过 JNDI、LADP 等协议或接口去读取相应环境中的配置。但在实现的过程中,并未对输入进行严格的判断,从而造成漏洞的发生。

详细信息请访问:https://nvd.nist.gov/vuln/detail/CVE-2021-44228

简单来说

只要日志写入了 ${jndi:ldap://网址} 这段话,电脑就会访问该网址,从而执行该网址上的程序。
Minecraft 聊天框中发送的内容也会被记录到日志文件中。

 

影响范围

 


使用 Log4j2 的 2.0 - 2.15.0-rc1 版本的程序均受影响;Log4j 1.x 也受此影响。
一些有名的应用有:Apache Solr、
Apache Flink、Apache Druid、Apache Struts2、srping-boot-strater-log4j2、ElasticSearch、flume、dubbo、Redis、logstash、kafka。

 

Minecraft 相关组件的影响范围

Minecraft 客户端与服务端:1.7 至 Minecraft 1.18-rc2 (Minecraft 1.18-rc3、1.18.1 已修复此漏洞)
包括 Forge、Fabric、Waterfall 等第三方组件。

如果你游玩原版单人游戏则不受影响。
Vanilla singleplayer is safe in any version. If you’re unsure of if you’re affected, *do not play multiplayer*.

 

通用解决方案


更新 Apache Log4j2 至 2.15.0-rc2 及以上版本(2.15.0)。

 

通用缓解方案

Log4j2 2.10.0 及以上版本可以在 Jvm 启动参数中加上 -Dlog4j2.formatMsgNoLookups=true-Dlog4j.formatMsgNoLookups=truelog4j2.component.properties

其他版本可以在 log4j2.component.properties 配置文件中添加 log4j2.formatMsgNoLookups=True 以及log4j.formatMsgNoLookups=True

 

 

Minecraft 解决方案


客户端

通用缓解方案

1.在启动器中的 Jvm 参数选项中加上-Dlog4j2.formatMsgNoLookups=true-Dlog4j.formatMsgNoLookups=true 来进行缓解。
仅 1.16 及以上版本有效。

2. 使用 JavaAgent 配合此 jar 进行拦截,理论上支持所有版本:https://www.mcbbs.net/thread-1283153-1-1.html
特别注意:不开源,不确定安全性。

正版启动器

如果你使用官方正版启动器,那么不用担心,Mojang 已进打上补丁了。重启几次启动器即可。
We deployed a new config file for log4j.

第三方启动器

HMCL:更新至 3.4.210 及以上版本即可;下载地址
PCL2:更新至 2.2.7 及以上版本即可;下载地址
BakaXL:更新至 3.1.0.2 及以上版本即可;下载地址
MultiMC:据悉已解决(#4323)似乎不需要更新?;下载地址

其他未提及的启动器一般都以通过更新解决,请更新您的启动器至最新版本。

启动器的修复可能不是那么靠谱,如果你游玩模组,那么建议同样进行下面的措施。

Forge 客户端

Forge 已对 1.12.2 及以上的主要版本提供修复。
具体修复版本为:
1.12.2 - 14.23.5.2856
1.13.2 - 25.0.222
1.15.2 - 31.2.56
1.16.5 - 36.2.20
1.17.1 - 37.1.1
1.18 - 38.0.17

以上版本请在启动器中更新你的 Forge 至列出及以上版本,或是至官网手动下载并安装更新。
更新 Forge 可能造成一些奇怪的模组无法运行,你也可以查看下面的模组修复方式。

Forge 模组

1.7.10 至 1.12.2 版本可以安装此模组来进行修复:https://github.com/Glease/Healer
Healer-1.1.0.jar 支持 1.7.10 至 1.12.2 的所有版本,此补丁不会显示在模组列表中。

其他版本:暂无

Fabric 客户端

Fabric Loader 0.12.9 已修复此问题。
请在启动器中更新你的 Fabric Loader 至列出及以上版本,或是至官网手动下载安装器并安装更新。
你可能还需要更新 Fabric API 来配合新版本的 Loader。
更新 Fabric Loader 可能造成一些奇怪的模组无法运行,你也可以查看下面的模组修复方式。

Fabric 模组

暂无

 

服务端

通用缓解方案

1.在启动 Jvm 参数选项中加上-Dlog4j2.formatMsgNoLookups=true-Dlog4j.formatMsgNoLookups=true 来进行缓解。
仅 1.16 及以上版本有效。

2. 使用 JavaAgent 配合此 jar 进行拦截,理论上支持所有版本:https://www.mcbbs.net/thread-1283153-1-1.html
特别注意:不开源,不确定安全性。

原版服务端

暂无

Forge 服务端

Forge 已对 1.12.2 及以上的主要版本提供修复。
具体修复版本为:
1.12.2 - 14.23.5.2856
1.13.2 - 25.0.222
1.15.2 - 31.2.56
1.16.5 - 36.2.20
1.17.1 - 37.1.1
1.18 - 38.0.17

以上版本请到官网下载并手动更新你的 Forge 至列出及以上版本。
更新 Forge 可能造成一些奇怪的模组无法运行,你也可以查看下面的模组修复方式。

Forge 模组

1.7.10 至 1.12.2 版本可以安装此模组来进行修复:https://github.com/Glease/Healer
Healer-1.1.0.jar 支持 1.7.10 至 1.12.2 的所有版本,此补丁不会显示在模组列表中。

其他版本:暂无

Fabric 服务端

Fabric Loader 0.12.9 已修复此问题。
以上版本请到官网下载并手动更新你的 Fabric Loader 至列出及以上版本。
你可能还需要更新 Fabric API 来配合新版本的 Loader。
更新 Fabric Loader 可能造成一些奇怪的模组无法运行,你也可以查看下面的模组修复方式。

Fabric 模组

暂无

Spigot 服务端

Spigot 团体已为 1.8.8 及以上主要版本提供修复。
请使用你的 BuildTools 构建新版本服务端。
具体修复版本为:
1.8.8 (BuildTools rev 582-a)
1.9.4 (BuildTools rev 849-a)
1.10.2 (BuildTools rev 986-a)
1.11.2 (BuildTools rev 1251-a)
1.12.2 (BuildTools rev 1573-k)
1.13.2 (BuildTools rev 2148-d)
1.14.4 (BuildTools rev 2502-c)
1.15.2 (BuildTools rev 2703-a)
1.16.5 (BuildTools rev 3096-a)
1.17.1 (BuildTools rev 3284-a)
1.18 (所有新版本)官方说的

以上版本请到官网下载 BuildTools 手动构建并更新你的 Spigot 服务端至列出及以上版本。
其他版本可以尝试安装插件:https://github.com/caoli5288/log4j2jndiinterceptorhttps://github.com/ChloePrime/fix4log4j
支持 1.8 至 1.16 的所有版本。

Paper 服务端

目前 PaperMC 团队仅对 1.16.5、1.17.1、1.18 版本提供修复。
具体修复版本为:
1.16.5 (#792)
1.17.1 (#399)
1.18 (#66)

以上版本请到官网下载并更新你的 Paper 服务端至列出及以上版本。
其他版本可以尝试安装插件:https://github.com/caoli5288/log4j2jndiinterceptorhttps://github.com/ChloePrime/fix4log4j
支持 1.8 至 1.16 的所有版本。

 

服务端代理

Bungeecord

不受此漏洞影响。

Waterfall

已于 1.18 (#468) 修复。
请到官网下载并更新你的服务端代理至列出及以上版本。

Velocity

已于 Velocity 3.1.1 (#98) 修复。
请到官网下载并更新你的服务端代理至列出及以上版本。