Redis 7.4.5版本的Lua脚本引擎中新发现了三个高危漏洞,每个漏洞都存在远程代码执行和权限提升的严重风险。Redrays安全团队已公开发布详细的PoC(概念验证)利用代码,建议相关组织立即采取应对措施。
释放后使用漏洞(CVE-2025-49844)
该漏洞源于脚本解析过程中TString对象保护不足的问题。具体而言,在luaY_parser函数中,Lua解析器未能对新创建的TString对象实施有效保护,导致其可能被提前垃圾回收并引发释放后使用问题:
修复后的代码在解析前先将对象保护在栈中:
攻击者可通过精心设计垃圾回收触发时机,利用此漏洞实现远程代码执行。
整数溢出漏洞(CVE-2025-46817)
unpack()函数在计算元素数量时存在缺陷,当传入极端范围参数时可能导致栈损坏。例如通过构造unpack({1,2,3}, -2, 2147483647)等参数,攻击者可突破数组边界甚至执行任意代码。
元表权限提升漏洞(CVE-2025-46818)
由于字符串和数字等基础类型的元表未正确设置为只读属性,攻击者可篡改这些关键元表。通过精心构造的Lua脚本,恶意行为者能够注入权限提升逻辑或在其他用户上下文中执行代码。
PoC技术细节
RedRays发布的Python版PoC完整验证了三个漏洞的危害性,自动化执行以下测试:
- 针对释放后使用漏洞(CVE-2025-49844)的堆内存和垃圾回收压力测试
- 通过模糊测试触发unpack()调用的整数溢出和栈损坏(CVE-2025-46817)
- 操纵基础类型元表验证权限提升可行性(CVE-2025-46818)
该PoC会连接目标Redis实例并运行最多十项全栈测试,通过Redis EVAL命令发送定制Lua脚本,既能验证漏洞可利用性,也能检测补丁状态,同时输出服务器崩溃/响应等实证数据。
CVE编号 | 漏洞名称 | 严重等级 |
---|---|---|
CVE-2025-49844 | Lua解析器释放后使用漏洞(deps/lua/src/lparser.c:387) | 严重 |
CVE-2025-46817 | unpack()整数溢出漏洞(deps/lua/src/lbaselib.c) | 严重 |
CVE-2025-46818 | 元表权限提升漏洞(script_lua.c, eval.c) | 严重 |
缓解措施
Redis管理员必须立即升级至修复版本。经源码审计和实际利用验证,这些漏洞显著扩大了Redis的攻击面,特别是允许EVAL命令的环境将面临现实威胁。运行Redis 7.4.5的组织应即刻部署补丁,防止攻击者利用这些漏洞实现完全远程代码执行和未授权权限提升。所有暴露在互联网或不可信环境中的Redis实例都应优先打补丁。
参考来源:
PoC Exploit Released for Critical Lua Engine Vulnerabilities
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf
客服小蜜蜂(微信:freebee1024)