什么是 LocalizeBug Fix?
:::warning 已废弃
LocalizeBug Fix 已归档,不再维护。仓库已于 2015 年在 GitHub 上归档,不再接受任何改动。此处记录仅供参考。
对于这一类漏洞,在当前的服务器上请使用 SafeNameAndChat。
:::
LocalizeBug Fix 是 @s1lentq 编写的 Metamod 插件,用于封堵 GoldSrc 中的一个漏洞:嵌入玩家昵称或聊天消息中的本地化标记,会让每一个收到它的客户端崩溃。
它是这类修复的第一代。ReHLDS 组织后来把它扩展为 ReLocalizeBug Fix——而后者如今同样已经废弃。
它封堵的漏洞
GoldSrc 客户端会把某些消息中以 # 开头的标记当作本地化键来解析。作者记录了两条攻击途径:
-
聊天。 经由
client_print_color/client_print发送、含有标记的消息,例如:s1lent :#Spec_Help_Text Hello people! #Spec_Duck每一个收到该消息的客户端都会崩溃。
-
通过
ShowMenu的玩家昵称。 形如:name "q#Buy#Buy#Buy#Buy#Buy#Buy#Buy"的昵称,会让客户端在打开玩家列表菜单时崩溃。
为什么被废弃
该插件面向的是原版 HLDS,在 ReHLDS 服务器上被 ReLocalizeBugFix 取代;而后者又在 2017 年被标记为废弃。现代服务器的这项防护来自 SafeNameAndChat,它会净化问题字符,而不是拦截整条消息。