教程:修复Apache Log4j2漏洞

来自Minecraft Wiki
跳转到导航 跳转到搜索
该页面的内容不代表Mojang StudiosMinecraft Wiki的官方意见。
警告:Apache Log4j2远程代码执行漏洞(CVE-2021-44228)十分严重。

此漏洞可能导致计算机资料安全受到严重威胁,请务必重视

本教程介绍了修复Apache Log4j2相关漏洞的方法。

修复缘由[编辑 | 编辑源代码]

开源Java日志框架Apache Log4j2被曝出存在可被利用于远程执行代码的高危漏洞。由于Java版的大部分版本使用了该日志框架,绝大多数Minecraft玩家都可能因该漏洞而遭受攻击。

漏洞危害[编辑 | 编辑源代码]

攻击者可利用该漏洞在未经授权的情况下在玩家电脑上执行任意命令,包括但不限于下载病毒、占用系统资源、窃取隐私等恶意命令。由于该漏洞存在范围广、利用门槛极低,会给玩家带来极高的安全隐患。

影响范围[编辑 | 编辑源代码]

注:此处只列举了被影响的Minecraft游戏版本。实际上所有使用了此日志框架的程序都受此漏洞影响。

已知可能被该漏洞影响的Minecraft版本有Java版1.7.213w39a)至Java版1.181.18.1-rc2)的客户端与服务端,包括:

  • 原版客户端与服务端
  • 安装了模组的客户端与服务端
  • Paper、Spigot等大多数第三方服务端
  • 其他符合条件的Java版客户端与服务端

以下Minecraft的版本不受影响:

检验方式[编辑 | 编辑源代码]

  • 如果使用客户端,你可以在游戏内聊天框输入${jndi:ldap://minecraft.wiki}来测试是否存在log4j漏洞。如果输入后出现短暂的卡顿,则说明漏洞存在(但要注意的是,某些客户端输入其他文本也会卡顿一下,所以应当尝试先输入普通聊天文本再尝试;而离线模式本身就不应存在卡顿现象);如果没有出现卡顿现象,则说明客户端是安全的。
  • 可以检查.minecraft/assets/log_configs下的文件是否与Mojang提供的最新版本一致。

修复方式[编辑 | 编辑源代码]

原版客户端[编辑 | 编辑源代码]

官方启动器[1]
  • 关闭所有正运行的游戏程序并重新启动启动器。启动游戏时,已修复的版本会自动下载并安装。
第三方启动器
  • 关闭游戏,将启动器更新到最新版本,并留意更新日志中是否说明修复了此漏洞。如果没有,请参照§ 临时防御方案修复。
  • PCL、HMCL、BakaXL等常见的第三方启动器均已针对此漏洞进行了紧急更新。如果你正在使用这些启动器,请尽快升级到最新版本。

模组加载器[编辑 | 编辑源代码]

Fabric
  • 将Fabric Loader更新到0.12.9及以上版本。
Forge
  • Forge声明其多个版本已包含针对此次log4j漏洞的紧急更新,推荐的版本:
    • 1.18-38.0.17
    • 1.17.1-37.1.1
    • 1.16.5-36.2.20
    • 1.15.2-31.2.56
    • 1.14.4-28.2.24
    • 1.13.2-25.0.221
    • 1.12.2-14.23.5.2856
  • 1.12.2与1.16.5版本可尝试安装此修复mod来进行修复。
其他模组加载器
  • 由于多数其他模组加载器已停更,它们都已不再安全,请修复启动器,或参照§ 临时防御方案修复。

原版服务端[编辑 | 编辑源代码]

1.18
  • 关闭服务端,升级到1.18.1,或者按照1.17的方法修复。
1.17
  • 关闭服务端,在启动脚本中添加JVM参数:-Dlog4j2.formatMsgNoLookups=true
1.12至1.16.5
  • 关闭服务端,下载log4j2_112-116.xml到服务器的工作路径。然后在启动脚本中加入JVM参数:-Dlog4j.configurationFile=log4j2_112-116.xml
1.7至1.11.2
  • 关闭服务端,下载log4j2_17-111.xml到服务器的工作路径。然后在启动脚本中加入JVM参数:-Dlog4j.configurationFile=log4j2_17-111.xml

第三方服务端[编辑 | 编辑源代码]

Paper、WaterFall、Velocity、Spigot
  • 这些服务端均已发布紧急更新,请关闭服务端,更新到最新版本。
BungeeCord
  • 不受影响,无需操作。
其他服务端
  • 请先关闭服务端,然后参照MCBBS上的帖子修复。如果你使用的服务端没有在帖子中列出,请将服务端更新到最新版本,并留意更新日志中是否说明修复了此漏洞。如果没有,请参照§ 临时防御方案修复。

临时防御方案[编辑 | 编辑源代码]

以下方案仅适用于使用log4j 2.10.0及以上版本的客户端或服务端。Java版1.17-pre1及以上的版本使用log4j 2.14.1,故可以使用以下方法。[2]

  • 添加JVM参数:-Dlog4j2.formatMsgNoLookups=true
  • 将系统环境变量LOG4J_FORMAT_MSG_NO_LOOKUPS设置为true

13w39a17w14a(使用log4j 2.0-beta9)以及17w15a21w20a(使用log4j 2.8.1)不能使用以上方法。

外部链接[编辑 | 编辑源代码]

参考[编辑 | 编辑源代码]

导航[编辑 | 编辑源代码]