跳到正文

Healer

作者:glease

修复 Minecraft Forge 1.7.10 至 1.12.2 中的 CVE-2021-44228 漏洞

收藏

介绍

介绍由机器翻译自 Modrinth 原页面,仅供参考。

通过反射移除 Interpolator 中的 JNDI lookup,并替换默认的 LoggerContextFactory,以捕获此模组加载后加载的任何 LoggerContext,从而修补 Minecraft Forge 1.7.10 – 1.12.2 的安全漏洞 CVE-2021-44228(也称 Log4Shell)。关于修补方式的更具体技术说明,请参阅源代码。

目前仅适用于 Minecraft 1.12 及更早版本。已在 1.7.10 和 1.12.2 上测试。

兼容性

如果有模组尝试以编程方式调整日志配置,它们会因全面的修补而无法正常工作。为解决此问题,healer 会延后修补,直到这些模组完成配置修改。

截至目前,healer 内置支持以下模组。

  • ForgeEssentials

如果其他模组因类似 ClassCastException: cannot cast XXXXXXXX to org.apache.logging.log4j.core.impl.Log4jContextFactory 的日志而崩溃,说明你遇到了这些模组之一。

要解决此问题,请到我的问题反馈区提交反馈,或者在 JVM 启动参数中添加 -Dnet.glease.healer.patch_stage=XXXX,其中 XXXX 可以是 PRELOAD, PREINIT, INIT, POSTINIT 中的任意一个(按时间顺序排列,最早的是第一个)。通常 PREINIT 就足以缓解此问题;POSTINIT 应该能解决所有问题。

致普通玩家

  1. 如果你的启动器已经应用了此修补,就不需要用这个模组来修补该漏洞。
  2. 如果你已应用 Mojang 的修复,就不需要用这个模组来修补该漏洞。
  3. 如果你安装了适用于 1.7 的 FoamFix,就不需要用这个模组来修补该漏洞。
  4. 如果你使用了其他修复模组,请询问其原作者能否“捕获在该模组之后加载的任何 LoggerContext”。如果可以,你就不需要用这个模组;否则,请用这个模组替换原有模组,或使用会自动应用修补的启动器,例如 MultiMC。

致整合包作者

  1. 如果你的客户端整合包面向 Minecraft 1.7~1.12.2,我建议将此模组加入其中。这样可以保护尚未了解此漏洞、且恰好使用未应用修补的启动器的玩家。
  2. 如果你也发布服务端整合包,且它面向 Minecraft 1.7~1.12.2,那么只要你已应用 Mojang 的修复,就不一定需要添加此模组。不过,很多人不会使用服务端整合包附带的 StartServer.bat(或类似脚本),因此他们很可能不会使用 Mojang 修复版的 log4j2.xml。严格来说,你不应分发经过修改的 minecraft_server-1.7.10.jar,所以添加这个 jar 是确保用户获得修复的最直接方式。

常见问题

Healer 支持哪些 Minecraft 版本?

Healer 支持 Minecraft Java 版 1.7–1.12.2,共 35 个版本,可用的加载器:Forge。下载时注意选择和你游戏版本一致的文件。

Healer 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 Forge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。运行环境:客户端 / 服务端。

评论

登录后评论和评分

glease 的其他作品

查看全部 →