漏洞修复

警告

这些文档是为 SpongeAPI 7 编写的,可能已经过时。 如果你觉得你可以帮助更新它们,请提交一个 PR!

在最近的几个 Sponge 构建(SpongeForge 974+,译者注:目前已不是最近,也就是说该篇中所有的“最近”都值得怀疑)中,SpongeForge 和 SpongeVanilla 修复了几个客户端连接服务端时出现的漏洞。只要发现连接服务端的用户试图使用这些漏洞,他们就将会被从服务器中踢掉,并附带解释为什么被踢掉。相关的日志在启用时也会记录这些行为。未来可能也会有更多的漏洞修复。

备注

如果你知道一些我们目前 没有 修复的漏洞,请让我们知道它们!你可以通过 exploits@spongepowered.org 与我们联系,或者PM论坛的版主。不过除非你确信人人都知道这些漏洞,否则请 不要 在 IRC 或者 GitHub 仓库、论坛等地公开说明这些事。我们不希望我们在修复漏洞前发现这个漏洞已经被滥用了。

Sponge 修复的漏洞

  1. 一个关于用户试图点击告示牌上的诸如“op”命令的漏洞

  2. 一个客户端可以强制要求服务端在玩家重生时对其他玩家不可见的漏洞

  3. 一个客户端可以设置物品的显示名称长度超过字符串最大长度限制的漏洞

注意,你并不能配置这些漏洞,以使得它们被允许,你只能设置其是否被记录。

警告

在最近的几个 Sponge 构建中,我们已经禁止了隐藏的漏洞修复,因为有些检测方法被指出对正常用户的非执行漏洞行为出现了误判。

日志信息控制

Sponge 的配置文件可以单独控制是否记录漏洞修复的相关行为。请参阅 global.conf 文件 的相关页面以了解更多的信息。这里是一些可用选项的简要介绍:

# Log when server receives exploited packet with itemstack name exceeding string limit.
exploit-itemstack-name-overflow=false

# Log when player attempts to respawn invisible to surrounding players.
exploit-respawn-invisibility=false

# Log when server receives exploited packet to update a sign containing commands from player with no permission.
exploit-sign-command-updates=false

小技巧

日志信息也可以通过命令行,而不是直接修改配置文件来控制。比如如果你想要允许记录试图利用告示牌相关的漏洞行为,你可以输入 sponge config -g logging.exploit-sign-command-updates true 命令(如果你是 OP 的话,你可以直接在游戏中输入)。