修复 Minecraft Forge 1.7.10 - 1.12.2 的安全漏洞 CVE-2021-44228(也称为 Log4Shell),方法是通过反射从 Interpolator 中移除 JNDI 查找,并替换默认的 LoggerContextFactory 以捕获在此模组之后加载的任何 LoggerContext。关于我如何修补它的具体技术解释,请参阅源代码。
目前仅适用于 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 应该足以解决所有问题。
致普通玩家
- 如果您的启动器已经修补了此漏洞,则不需要此模组来修补该漏洞。
- 如果您应用了 Mojang 的修复程序,则不需要此模组来修补该漏洞。
- 如果您拥有适用于 1.7 的 FoamFix,则不需要此模组来修补该漏洞。
- 如果您使用了其他修复模组,请询问其原始作者他们是否可以“捕获在其模组之后加载的任何 LoggerContext",如果是,则不需要此模组。否则,请用此模组替换该模组,或使用为您进行修补的启动器,例如 MultiMC。
致模组包制作者
- 如果您的客户端包旨在用于 Minecraft 1.7~1.12.2,我建议您在其中包含此模组。这将保护那些尚未意识到此问题且碰巧使用尚未修补此问题的启动器的用户。
- 如果您还分发服务器包,并且它旨在用于 Minecraft 1.7~1.12.2,那么如果您应用了 Mojang 的修复程序,则添加此模组并非必需。然而,由于许多人没有使用随您的服务器包提供的 StartServer.bat(或类似文件),他们很可能不会使用 Mojang 修复过的 log4j2.xml。从技术上讲,您不应该分发经过编辑的 minecraft_server-1.7.10.jar,因此添加此 jar 将是确保用户获得修复的最直接方法。
资源外链
选择礼物
使用社区积分,为喜欢的作品送上一份支持
加载中...
打赏记录
感谢每一位送出礼物的社区成员
0 次支持0 积分
正在加载内容…


