搜索
查看: 421|回复: 5

[公告] 紧急安全通告:修复CommonFun.lua中deserialize函数的远程代码

[复制链接]
发表于 4 天前 | 显示全部楼层 |阅读模式
本帖最后由 法海不懂爱 于 2025-5-30 20:05 编辑

紧急安全通告:修复CommonFun.lua中deserialize函数的远程代码执行漏洞
各位开发者:

我们发现在所有版本的Lua脚本中,CommonFun.lua文件的deserialize函数存在高危安全漏洞,可能导致远程代码执行风险。为确保系统安全,请立即执行以下修复方案。

漏洞说明
  • 风险等级:严重
  • 影响范围:所有使用CommonFun.lua的系统
  • 漏洞详情:deserialize函数存在远程代码执行风险
  • 特别说明:未使用Lua自定义通讯执行deserialize的系统可忽略此漏洞


解决方案
临时解决方案(推荐)
[方案1] 使用纯Lua JSON库:

[方案2] 使用自定义字符串分割:
  • 利用CommonFun.lua中的strSplit函数
  • 参考客户端itemInfo.getState中的getValue方法实现

终极解决方案
  • 下个版本将引入高性能的cjson库
  • 彻底解决安全风险并提升性能


教程(以Rxi/json.lua为例)
第一步:下载Rxi/json.lua,附件已提供
[客户端目录结构]
  1. 专属目录/
  2. └── lua/
  3.     └── main/
  4.         └── json.lua(新增文件)
复制代码

[服务端目录结构]
  1. Mirserver/
  2. └── Mir200/
  3.     └── LuaScripts/
  4.         └── System/
  5.             └── json.lua(新增文件)
复制代码


第二步:修改CommonFun.lua文件
[服务端修改代码]

  1. -- 在文件顶部添加
  2. local json = require("System\\json")

  3. -- 替换原有函数
  4. function serialize(obj)
  5.     return json.encode(obj)
  6. end

  7. function deserialize(text)
  8.     return json.decode(text)
  9. end
复制代码

[客户端修改代码]

  1. -- 在文件顶部添加
  2. local json = require("main\\json")

  3. -- 替换原有函数
  4. function serialize(obj)
  5.     return json.encode(obj)
  6. end

  7. function deserialize(text)
  8.     return json.decode(text)
  9. end
复制代码



注意事项
客户端和服务端必须同时修改
修改完成后请重启应用或重载客户端和服务端的lua
验证序列化/反序列化功能是否正常



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
发表于 4 天前 | 显示全部楼层
发表于 4 天前 | 显示全部楼层
果然 应对的好快
发表于 4 天前 | 显示全部楼层
提个建议 能否提高单次netmsg传输的字符长度 1w有点不够  频率GM自己把控就好
发表于 3 天前 | 显示全部楼层
我弱弱问下是不是拔附件下载下把lua文件复制进去就可以了
发表于 3 天前 | 显示全部楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|HGEM2论坛

GMT+8, 2025-6-3 02:32 , Processed in 0.448998 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表