我的世界java版服务端、客户端存在安全隐患。
漏洞利用log4j2
在打印日志时会自动将形如${...}
的文本替换为功能文本,以实现显示日期、java版本等参数。玩家在服务器中发言都会被打印到日志中,你可以在聊天框这么写:
${date:YY-MM-DD:hh:mm:ss}
日志:
21-12-13:21:00:00
或:
${java:vm}
日志:
OpenJDK 64-Bit.....#吧啦吧啦
#不同电脑不同
这些功能是很强大的,而log4j2
漏洞正是利用${jndi:ldap:<地址>}
可以下载并执行代码的作用。攻击者首先搭建一个服务器,再在被攻击服务器上发送该信息,即可让服务器上的玩家通过日志执行恶意代码,如图:
【由于找不到hkm
所以中断了】
这是非常恐怖的事…
更可怕的是,游戏中任何可以打印日志的地方都可以被利用,如在登录阶段如果玩家连接丢失就会打印一条“xxx(id) 连接丢失:balabala(原因)”,而这个游戏id是客户端发送给服务端的,所以攻击者只需要把上面所说到的那个字符串作为玩家id然后再故意在登录阶段断开连接就可以实现相同的攻击效果,而根本不需要登入服务器!所以白名单是没有用的!
目前,包括Minecraft官启、PCL2、HMCL等多数官方或非官方的启动器都已启动紧急更新。Mojang官方已发布补丁。但网易我的世界暂时无反应(截至目前)
处理方式:
1.更新各启动器紧急更新版本:
- PLC2:已发布紧急更新 2.2.7,更新到最新版并重启 MC 即可防御该漏洞。如果更新出现问题,请通过链接直接下载最新正式版。
- BakaXL:已发布紧急更新,同样更新到最新版并重启 MC 即可。
- HMCL:已发布紧急更新,同样更新到最新版并重启 MC 即可。
- 其他启动器:请在启动器设置的 Java 虚拟机参数 一项中输入【注意:没有换行,直接复制】
-XX:+UseG1GC -XX:-UseAdaptiveSizePolicy -XX:-OmitStackTraceInFastThrow -Dfml.ignoreInvalidMinecraftCertificates=True -Dfml.ignorePatchDiscrepancies=True -Dlog4j2.formatMsgNoLookups=true
然后重启 MC,即可临时防御该漏洞。
提示
建议暂时关闭服务器,避免遭到攻击,然后参考该文章进行修复:
另外,我的世界ver.1.18.1
及较低版本小概率遭打击,但还是建议安装修复补丁。
可以考虑访问链接下载修复mod,当然最好的还是官方补丁。
Q&A
Q:听说这个漏洞只影响服务端,我不开服是不是就不用管?
A:不,它也会影响客户端。只要你进入了多人游戏,你就有可能受到攻击。
Q:我如果不进服务器,还会被攻击吗?
A:如果你只玩单人游戏,大概就不会被影响。
Q:我的服务器是通过内网穿透开的,这会有影响吗?
A:问题出在 MC 的服务端,和你的开服手段没有任何关系。
Q:杀毒软件说最新版的 PCL2 是病毒?
A:因为这个版本是紧急更新的,误报病毒的反馈还在处理中,目前你可以先给 PCL2 添加杀毒软件白名单。明天就不会报毒了。
结语
注意:不止Minecraft,所有建立在java上的联机游戏都有安全隐患,只是以MC为首罢了。(MinecraftPE不受影响)
网络并非法外之地!遵纪守法从我做起!
@HaohaoCppDebuger|寻兰
2021/12/13
THANK YOU !
本文部分参考资料:bilibili_DCS;百度贴吧_我的世界吧