通过替换法来尝试修复 Minecraft 客户端的 log4j2 漏洞

2021-12-13 21:44:00
 尚寂新
这是一个创建于 200 天前的主题,其中的信息可能已经有所发展或是发生改变。

今天逛 B 站的时候,偶然刷到一个利用 log4j2 漏洞的视频,利用这个漏洞来测试网易的租赁服,无一例外的全部中招了。截至目前为止我也无法确定这个问题的真实性,因为要试试的话那可是真的刑...

然后 17 开了个 Mod 小服,虽说是服务端方面是修了的,但客户端本身还是存在漏洞的,想试一下去修复它,没想到成功了,具体有效性未知(因为如上原因,且自己也不是网络安全这个方向的,故不进行测试)。下面来介绍一下我的做法

现在现有的教程都是 如何修复服务端 ,但没发现有 如何修复客户端,也是我发此文的目的之一吧,造福大家。如果有别人发过了,也不差我这一篇了吧

客户端情况:Minecraft 1.12.2 Forge 端,并安装了大量的 Mod

下载最新 release

可下载到最新的 apache-log4j-2.15.0-bin.tar.gz ,通过查看 Minecraft 引用的第三方库,得知游戏使用了 log4j-corelog4j-api 这两个 lib 文件。

【写完文章后补充】但,2.15.0 和它的 RC1 版本都是没修利索的版本,需要安 RC2 的版本,才能解决问题...

注意:MCBBS 提供的 RC2 (候选发布版)链接,经别人提醒,官网里下到的可能仍有问题,需要使用这个

然后就替换大法了

可见游戏本体对其的引用
可见游戏本体对其的引用

替换与改名

参考下面两张图

log4j-api,注意就不要用15.0的了,用RC2换进去,图有点错,此处修正
log4j-api,注意就不要用15.0的了,用RC2换进去,图有点错,此处修正

log4j-core,注意就不要用15.0的了,用RC2换进去,图有点错,此处修正
log4j-core,注意就不要用15.0的了,用RC2换进去,图有点错,此处修正

防止游戏无法启动

这里以 HMCL 为例,为了保险,我做了这步。就怕游戏本体对文件有 hash ,我也懒得确定是否有这个情况了,总之能跑就成。不检查游戏完整性的开关打开一下。

HMCL 不检查游戏完整性
HMCL 不检查游戏完整性

成功启动

还是因为 Mod 安的太多了吧,我的笔电不配玩 Mod 服...

电脑配置太差了,跑不起来
电脑配置太差了,跑不起来

题外话

现在也不怎么玩 MC 了吧...刚刚用我的 jdk 去启动,但我 jdk 版本太高了根本跑不了,然后现去下载的 java8 ,然后环境变量成功的被改了...不说了我要去把我环境变量给改回来了...