搜索

我的世界安全漏洞

发表于 2026-10-17 06:00:33 来源:烟消火灭网

2023年夏天,世洞一个叫“Log4j”的界安幽灵在《我的世界》服务器圈里游荡。不是全漏Java那个Log4j,是世洞Mojang自己埋下的雷——游戏内置的聊天系统允许玩家通过特定格式的JSON消息,在服务器控制台执行任意指令。界安我管理的全漏那个生存服,晚上八点刚开服,世洞十分钟后所有箱子被清空,界安OP权限被转移到一个叫“Herobrine_2023”的全漏账号上。查日志才发现,世洞有人用聊天栏发了一串看似普通的界安颜色代码,后面跟着`/op`命令。全漏

这个漏洞的世洞原理不复杂。Minecraft的界安聊天组件用JSON格式存储文本,其中`clickEvent`和`hoverEvent`可以绑定动作。全漏问题出在旧版本(1.7到1.12)的解析逻辑上——服务端没有严格过滤`clickEvent`里的`run_command`动作。玩家发一条带`{ "action":"run_command","value":"/give @a diamond 64"}`的消息,其他玩家鼠标一点,指令就在自己客户端执行了。更糟的是,如果服务端装了一些老旧的权限插件,这些指令会以点击者的身份运行。你点一下,钻石到手;再点一下,OP没了。

我见过最离谱的案例发生在某个大型RPG服务器。管理员用告示牌做任务提示,结果有人用铁砧改名功能把告示牌内容替换成恶意JSON。玩家右键告示牌,直接触发`/ban`指令,把同IP的所有账号封禁。三天内封了四百多人,管理员还以为是反作弊插件误判。直到有人把告示牌挖下来放进展示框,才看到那行被隐藏的`clickEvent`。

Mojang的修复方式很粗暴:1.13版本重写了聊天系统,把`run_command`从客户端事件里彻底移除。但老版本服务器不会自动升级,很多公益服因为插件兼容性问题卡在1.12.2。这就留下一个死结——你知道漏洞存在,但升级意味着几十个自定义插件全部报废。我认识的一个服主选择手动打补丁,用正则表达式过滤所有含`clickEvent`的聊天包。结果呢?玩家发个带颜色的装备链接都被拦截,投诉信塞满邮箱。

另一个容易被忽略的点是“书与笔”。玩家可以在一本书里写入JSON文本,然后通过`/give`指令把书发给别人。接收者打开书的瞬间,恶意代码就在客户端执行。这个攻击面比聊天栏更隐蔽,因为书的内容不会显示在服务器日志里。我测试过,一本32页的书能塞进超过200条`run_command`指令,全部指向同一个操作:`/kill @e[type=player]`。打开书,周围所有人瞬间死亡。服务器TPS从20掉到3,因为死亡事件触发了大量掉落物计算。

修复方案其实早就有。Spigot在2018年就推送了安全更新,核心逻辑是“白名单过滤”——只允许`clickEvent`里出现`open_url`和`suggest_command`,其他动作一律剥离。但很多服主不知道这个更新,或者用了盗版服务端核心。我统计过二十个中文Minecraft论坛的服务器宣传帖,其中六个还在用1.8.9版本,三个明确写着“支持彩色聊天代码”。这些服务器至今仍然暴露在风险中。

个人建议:如果你开服,先检查服务端核心的构建日期。2020年之后的Paper或Spigot版本默认修复了这个问题。如果必须用老版本,装一个叫“ChatControl”的插件,它能拦截99%的恶意JSON。别信“我们服小没人攻击”这种话——我那个被清空的生存服,开服第三天就中招了。攻击脚本在GitHub上公开下载,连小学生都能改两行代码拿去用。

最后说个真事。有个玩家用这个漏洞在服务器里刷了三千个命令方块,摆成“Mojang sucks”的字样。管理员删了三天才删完。后来那个玩家成了服里的技术顾问,专门帮人修漏洞。你看,破坏者和修补者之间,有时候只隔着一行JSON的距离。

随机为您推荐
友情链接
版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright © 2016 Powered by 我的世界安全漏洞,烟消火灭网   sitemap

回顶部