基本信息
我的世界Java版本
1.12.x
1.11.x
1.10.x
1.9.x
1.8.x
1.7.x
平台
Forge
运行环境
其他链接
搬运团队
详情信息
许可证 MIT
发布于 7 months ago
更新于 9 months ago
为 Minecraft Forge 1.7.10 - 1.12.2 修补安全漏洞 CVE-2021-44228(也称为 Log4Shell),通过使用反射从插值器中删除 JNDI 查找,并替换默认的 LoggerContextFactory 以捕获在此 mod 之后加载的任何 LoggerContext。有关我如何修补它的更具体技术说明,请参考源代码。
目前仅适用于 Minecraft 1.12 及更早版本。在 1.7.10 和 1.12.2 上进行了测试。
兼容性
如果任何 mod 尝试以编程方式调整日志配置,由于进行了详尽的修补,它们将惨败。为了解决这个问题,healer 将修补推迟到足够晚,直到上述 mod 完成编辑。
截至目前,healer 已内置支持以下 mod。
- ForgeEssentials
如果您的其他 mod 因日志行如ClassCastException: cannot cast XXXXXXXX to org.apache.logging.log4j.core.impl.Log4jContextFactory
而崩溃,那么您已经踩到了这些 mod 之一。
要解决此问题,请在我的问题跟踪器上提出投诉,或在 JVM 启动参数中添加-Dnet.glease.healer.patch_stage=XXXX
,其中 XXXX 可以是PRELOAD、PREINIT、INIT、POSTINIT
(按时间顺序,最早的为第一个)。PREINIT 通常足以缓解问题,POSTINIT 应该足以解决所有问题。
对于普通玩家
- 如果您的启动器已经修补了此漏洞,您将不需要此 mod 来修补漏洞。
- 如果您应用了 mojang 的修复,您将不需要此 mod 来修补漏洞。
- 如果您有针对 1.7 的 FoamFix,您将不需要此 mod 来修补漏洞。
- 如果您使用了其他修复 mod,请询问其原始作者他们是否可以“捕获在其 mod 之后加载的任何 LoggerContext”,如果是,您将不需要此 mod。否则,用此 mod 替换该 mod,或使用为您进行修补的启动器,例如 MultiMC。
对于模组包制作者
- 我建议您在客户端包中包含此 mod,如果它适用于 Minecraft 1.7~1.12.2。这将保护您的用户,他们可能还不知道此问题,并且碰巧使用了尚未修补此漏洞的启动器。
- 如果您还分发服务器包,并且适用于 Minecraft 1.7~1.12.2,如果您应用了 mojang 的修复,则添加此 mod 不是必需的。然而,由于许多人不使用随您的服务器包附带的 StartServer.bat(或类似的东西),他们很可能不会使用 mojang 修复的 log4j2.xml。从技术上讲,您不应该分发编辑过的 minecraft_server-1.7.10.jar,因此添加此 jar 将是确保用户获得修复的最直接方法。