潜伏13年的高危威胁:Redis Lua脚本远程代码执行漏洞(CVE-2025-49844)深度剖析与应对

潜伏13年的高危威胁:Redis Lua脚本远程代码执行漏洞(CVE-2025-49844)深度剖析与应对

一个埋藏在Redis数据库深处长达13年的高危漏洞,正威胁着全球数十万个直接暴露在互联网上的Redis实例,而75%的云环境正在使用这种数据库。

近日,网络安全研究人员披露了一个潜伏在Redis开源数据库中长达13年的高危漏洞(CVE-2025-49844),该漏洞被评定为最高危险等级——CVSS评分达到满分10分

截至2025年10月󠄐󠄹󠅀󠄪󠄢󠄡󠄦󠄞󠄧󠄣󠄞󠄢󠄡󠄦󠄞󠄡󠄡󠄩󠄬󠅒󠅢󠄟󠄮󠄐󠅅󠄹󠄴󠄪󠄾󠅟󠅤󠄐󠄼󠅟󠅗󠅙󠅞󠄬󠅒󠅢󠄟󠄮󠅄󠅙󠅝󠅕󠄪󠄡󠄧󠄦󠄦󠄐󠄹󠅀󠄪󠄢󠄡󠄦󠄞󠄧󠄣󠄞󠄢󠄡󠄦󠄞󠄡󠄡󠄩󠄬󠅒󠅢󠄟󠄮󠄐󠅅󠄹󠄴󠄪󠄾󠅟󠅤󠄐󠄼󠅟󠅗󠅙󠅞󠄬󠅒󠅢󠄟󠄮󠅄󠅙󠅝󠅕󠄪󠄡󠄧󠄦󠄦󠄤󠄢󠄣󠄧󠄧󠄨󠄬󠅒󠅢󠄟󠄮󠄤󠄢󠄣󠄧󠄧󠄨󠄬󠅒󠅢󠄟󠄮27日,全球仍有超过8500个Redis实例直接暴露在公共互联网中且易受󠄐󠄹󠅀󠄪󠄢󠄡󠄦󠄞󠄧󠄣󠄞󠄢󠄡󠄦󠄞󠄡󠄡󠄩󠄬󠅒󠅢󠄟󠄮󠄐󠅅󠄹󠄴󠄪󠄾󠅟󠅤󠄐󠄼󠅟󠅗󠅙󠅞󠄬󠅒󠅢󠄟󠄮󠅄󠅙󠅝󠅕󠄪󠄡󠄧󠄦󠄦󠄤󠄢󠄣󠄧󠄧󠄨󠄬󠅒󠅢󠄟󠄮攻击。

更令人担忧的是,据研究人员统计,约33万个Redis实例直接暴露于公网,其中6万个甚至未配置身份验证


01 漏洞概述

Redis是一个开源的使用ANSI C语言编写的键值存储数据库,遵守BSD协议,支持网络、可基于内存、分布式、可选持久性。

由于其高性能、低延迟的特点,Redis被广泛应用于缓存、消息队列、会话󠄐󠄹󠅀󠄪󠄢󠄡󠄦󠄞󠄧󠄣󠄞󠄢󠄡󠄦󠄞󠄡󠄡󠄩󠄬󠅒󠅢󠄟󠄮󠄐󠅅󠄹󠄴󠄪󠄾󠅟󠅤󠄐󠄼󠅟󠅗󠅙󠅞󠄬󠅒󠅢󠄟󠄮󠅄󠅙󠅝󠅕󠄪󠄡󠄧󠄦󠄦󠄤󠄢󠄣󠄧󠄧󠄨󠄬󠅒󠅢󠄟󠄮存储、实时分析等场景,已经成为󠄐󠄹󠅀󠄪󠄢󠄡󠄦󠄞󠄧󠄣󠄞󠄐󠄹󠅀󠄪󠄢󠄡󠄦󠄞󠄧󠄣󠄞󠄢󠄡󠄦󠄞󠄡󠄡󠄩󠄬󠅒󠅢󠄟󠄮󠄐󠅅󠄹󠄴󠄪󠄾󠅟󠅤󠄐󠄼󠅟󠅗󠅙󠅞󠄬󠅒󠅢󠄟󠄮󠅄󠅙󠅝󠅕󠄪󠄡󠄧󠄦󠄦󠄤󠄢󠄣󠄧󠄧󠄨󠄬󠅒󠅢󠄟󠄮󠄢󠄡󠄦󠄞󠄡󠄡󠄩󠄬󠅒󠅢󠄟󠄮󠄐󠅅󠄹󠄴󠄪󠄾󠅟󠅤󠄐󠄼󠅟󠅗󠅙󠅞󠄬󠅒󠅢󠄟󠄮󠅄󠅙󠅝󠅕󠄪󠄡󠄧󠄦󠄦󠄤󠄢󠄣󠄧󠄧󠄨󠄬󠅒󠅢󠄟󠄮󠄐󠄹󠅀󠄪󠄢󠄡󠄦󠄞󠄧󠄣󠄞󠄢󠄡󠄦󠄞󠄡󠄡󠄩󠄬󠅒󠅢󠄟󠄮󠄐󠅅󠄹󠄴󠄪󠄾󠅟󠅤󠄐󠄼󠅟󠅗󠅙󠅞󠄬󠅒󠅢󠄟󠄮󠅄󠅙󠅝󠅕󠄪󠄡󠄧󠄦󠄦󠄤󠄢󠄣󠄧󠄧󠄨󠄬󠅒󠅢󠄟󠄮现代应用架构中不可或缺的组件。

CVE-2025-49844是一个存在于Redis Lua脚本引擎中的释放后使用漏洞。经过身份验证的攻击者可以通过发送恶意Lua脚本操纵Redis的垃圾回收机制,触发释放后使用漏洞,最终导致在Redis服务器进程中执行任意代码。

02 漏洞技术原理

Lua脚本引擎与内存管理

Redis内置了Lua脚本引擎,允许用户通过EVALEVALSHA命令执行Lua脚本。这一功能使得客户端可以在服务器端执行复杂的逻辑,减少了网络往返时间,提高了性能。

微信图片_20251212220615_369_5

在Redis的架构中,Lua脚本执行在一个沙箱环境中,理论上应该与Redis主进程的其他部分隔离,确保安全性。然而,CVE-2025-49844正是打破了这一隔离机制。

释放后使用漏洞的本质

该漏洞的核心问题在于Redis Lua解析器的内存管理缺陷。具体来说,在创建Lua chunk-name的TString对象时,没有把该字符串“锚定”到Lua栈上。

当随后触发垃圾回收时,G󠄐󠄹󠅀󠄪󠄢󠄡󠄦󠄞󠄧󠄣󠄞󠄢󠄡󠄐󠄹󠅀󠄪󠄢󠄡󠄦󠄞󠄧󠄣󠄞󠄢󠄡󠄦󠄞󠄡󠄡󠄩󠄬󠅒󠅢󠄟󠄮󠄐󠅅󠄹󠄴󠄪󠄾󠅟󠅤󠄐󠄼󠅟󠅗󠅙󠅞󠄬󠅒󠅢󠄟󠄮󠅄󠅙󠅝󠄐󠄹󠅀󠄪󠄢󠄡󠄦󠄞󠄧󠄣󠄞󠄢󠄡󠄦󠄞󠄡󠄡󠄩󠄬󠅒󠅢󠄟󠄮󠄐󠅅󠄹󠄴󠄪󠄾󠅟󠅤󠄐󠄼󠅟󠅗󠅙󠅞󠄬󠅒󠅢󠄟󠄮󠅄󠅙󠅝󠅕󠄪󠄡󠄧󠄦󠄦󠄤󠄢󠄣󠄧󠄧󠄨󠄬󠅒󠅢󠄟󠄮󠅕󠄪󠄡󠄧󠄦󠄦󠄤󠄢󠄣󠄧󠄐󠄹󠅀󠄪󠄢󠄡󠄦󠄞󠄧󠄣󠄞󠄢󠄡󠄦󠄞󠄡󠄡󠄩󠄬󠅒󠅢󠄟󠄮󠄐󠅅󠄹󠄴󠄪󠄾󠅟󠅤󠄐󠄼󠅟󠅗󠅙󠅞󠄬󠅒󠅢󠄟󠄮󠅄󠅙󠅝󠅕󠄪󠄡󠄧󠄦󠄦󠄤󠄢󠄣󠄧󠄧󠄨󠄬󠅒󠅢󠄟󠄮󠄧󠄨󠄬󠅒󠅢󠄟󠄮󠄦󠄞󠄡󠄡󠄩󠄬󠅒󠅢󠄟󠄮󠄐󠅅󠄹󠄴󠄪󠄾󠅟󠅤󠄐󠄼󠅟󠅗󠅙󠅞󠄬󠅒󠅢󠄟󠄮󠅄󠅙󠅝󠅕󠄪󠄡󠄧󠄦󠄦󠄤󠄢󠄣󠄧󠄧󠄨󠄬󠅒󠅢󠄟󠄮C会释放该字符串内存,而解析器仍可能引用已释放的内存,从而产生Use-After-Free情况。

攻击机制分析

攻击者通过精心构造的Lua脚本,可以在解析器处理脚本时强制触发垃圾回收。通过在大量loadstring/load调用中插入collectgarbage()强制GC,攻击者可以在解析器仍在处理脚本时释放内存。

通过精确控制时间窗口,攻击者能够制造“解析器引用已释放内存”的竞态条件。当释放后的内存被其他数据覆盖时,攻击者可以控制解析器的执行流程,最终绕过Lua沙箱限制,在Redis进程上下文中执行任意代码。

03 影响范围和严重性

受影响版本

CVE-2025-49844影响了Redis近13年来的多个版本,包括:

  • Redis < 6.2.20

  • 7.0 <= Redis < 7.2.11

  • 7.4.0 <= Redis < 7.4.6

  • 8.0.0 <= Redis < 8.0.4

  • 8.2.0 <= Redis < 8.2.2

严重性评估

该漏洞被评定为CVSS 10.0(满分),属于最高危险等级漏洞。攻击者利用此漏洞可以在易受攻击的Redis实例上实现主机级远程代码执行,将仅用于数据缓存的服务转变为完全的主机入侵入口

暴露情况统计

截至2025年10月27日的统计数据显示,全球仍有超过8500个Redis实例易受此漏洞攻击。更早的统计则显示,约33万个Redis实例直接暴露于公网,其中6万个甚至未配置身份验证。

按地区分布的易受攻击实例数量统计:

 
 
国家/地区 易受攻击实例数量 占比
美国 1887个 约22.2%
法国 1324个 约15.6%
德国 929个 约10.9%
其他地区 约4360个 约51.3%

美国、法国和德国的易受攻击实例数量合计占全球暴露总量的近50%,表明这些地区要么是特定基础设施枢纽成为蓄意目标,要么企业环境中广泛存在未打补丁的Redis实例。

04 利用条件与攻击链分析

攻击利用条件

成功利用此漏洞需要满足以下条件:

  1. 攻击者能够连接至目标Redis实例

  2. 拥有低权限认证(或在未启用身份验证的环境下无需凭证)

  3. EVAL或EVALSHA命令未被禁用

值得注意的是,许多Redis实例默认不启用身份验证,特别是在开发环境和遗留部署中,这大大降低了攻击者的门槛。

典型攻击流程

一次完整的攻击通常遵循以下流程:

初始入侵:攻击者通过恶意Lua脚本实现初始入侵。在未启用身份验证的环境中,攻击者甚至无需凭证即可投递恶意脚本。

沙箱逃逸:利用漏洞中的UAF条件,使脚本能够突破Lua沙箱环境的限制,获得更高的执行权限。

持久化访问:攻击成功后,攻击者通常会安装反向shell或后门以维持持久访问,确保即使Redis重启或更新也能保持控制。

横向移动:攻击者会尝试窃取系统凭证,以便横向移动至更广泛的基础设施,扩大攻击范围。

实际攻击场景

攻击者利用此漏洞可以实现多种恶意目的,包括但不限于:完全接管运行受影响Redis实例的基础设施、窃取敏感数据、部署加密矿工和勒索软件等二次攻击载荷。

05 漏洞检测与修复方案

漏洞检测方法

管理员可以通过以下方式检测系统是否受到此漏洞的影响:

  1. 检查Redis版本:确认Redis版本是否处于受影响范围内。如果运行的是受影响版本,应立即采取修复措施。

  2. 监控异常行为:观察Redis日志与崩溃记录。若出现频繁的段错误或Redis频繁重启,应立即怀疑可能遭受攻击。

  3. 安全产品检测:在IDS/EDR中搜索异常的EVAL/EVALSHA调用模式,特别是短时间内大量脚本执行、含有collectgarbage()或大量loadstring/load的脚本。

修复方案

根本解决方案:版本升级

最根本的解决方案是升级到已修复该漏洞的Redis版本:

  • Redis >= 6.2.20

  • Redis >= 7.2.11

  • Redis >= 7.4.6

  • Redis >= 8.0.4

  • Redis >= 8.2.2

官方补丁可以从Redis官方网站下载:https://redis.io/downloads/[citation:1]。

临时缓解措施

如果暂时无法进行升级操作,可以采取以下临时缓解措施:

启用身份验证:通过AUTH或ACL配置启用Redis身份验证,确保只有经过认证的用户才能访问Redis实例。

网络访问控制:限制对6379端口的网络访问,仅允许可信IP地址连接Redis服务。确保Redis实例不直接暴露在公共互联网上。

禁用危险命令:通过ACL限制或禁止EVAL和EVALSHA命令的使用,阻止攻击者执行恶意Lua脚本。

监控与告警:加强对Redis实例的监控,设置异常行为告警,如短时间内大量Lua脚本执行请求。

06 长期防御策略

修复CVE-2025-49844漏洞只是安全防御的第一步。为确保Redis数据库的长期安全,组织应采取以下防御策略:

定期安全更新:建立定期的安全更新流程,确保Redis及其他关键软件始终保持最新版本。

最小权限原则:为Redis服务配置最小必要权限,避免使用root等高权限账户运行Redis。

纵深防御:采用多层防御策略,结合网络防火墙、主机防火墙、入侵检测系统和安全监控,构建全面的安全防护体系。

安全配置基线:建立Redis安全配置基线,包括启用身份验证、禁用危险命令、限制网络访问等,并定期审计配置合规性。

安全意识培训:对开发和运维团队进行安全意识培训,确保他们了解Redis安全最佳实践,并能够识别潜在的安全风险。

面对CVE-2025-49844这样的高危漏洞,仅仅依赖外围防护是远远不够的。最有效的防护仍然是及时应用安全补丁,消除漏洞存在的根本条件。

随着云计算和微服务架构的普及,Redis等内存数据库的使用越来越广泛,对其安全性也提出了更高要求。只有构建全面󠄐󠄹󠅀󠄪󠄢󠄡󠄦󠄞󠄧󠄣󠄞󠄢󠄡󠄦󠄞󠄡󠄡󠄩󠄬󠅒󠅢󠄟󠄮󠄐󠅅󠄹󠄴󠄪󠄾󠅟󠅤󠄐󠄼󠅟󠅗󠅙󠅞󠄬󠅒󠅢󠄟󠄮󠅄󠄐󠄹󠅀󠄪󠄢󠄡󠄦󠄞󠄧󠄣󠄞󠄢󠄡󠄦󠄞󠄡󠄡󠄩󠄬󠅒󠅢󠄟󠄮󠄐󠅅󠄹󠄴󠄪󠄾󠅟󠅤󠄐󠄼󠅟󠅗󠅙󠅞󠄬󠅒󠅢󠄟󠄮󠅄󠅙󠅝󠅕󠄪󠄡󠄧󠄦󠄦󠄤󠄢󠄣󠄧󠄧󠄨󠄬󠅒󠅢󠄟󠄮󠅙󠅝󠅕󠄪󠄡󠄧󠄦󠄦󠄤󠄢󠄣󠄧󠄧󠄨󠄬󠅒󠅢󠄟󠄮、纵󠄐󠄹󠅀󠄪󠄢󠄡󠄦󠄐󠄹󠅀󠄪󠄢󠄡󠄦󠄞󠄧󠄣󠄞󠄢󠄡󠄦󠄞󠄡󠄡󠄩󠄬󠅒󠅢󠄟󠄮󠄐󠅅󠄹󠄴󠄪󠄾󠅟󠅤󠄐󠄹󠅀󠄪󠄢󠄡󠄦󠄞󠄧󠄣󠄞󠄢󠄡󠄦󠄞󠄡󠄡󠄩󠄬󠅒󠅢󠄟󠄮󠄐󠅅󠄹󠄴󠄪󠄾󠅟󠅤󠄐󠄼󠅟󠅗󠅙󠅞󠄬󠅒󠅢󠄟󠄮󠅄󠅙󠅝󠅕󠄪󠄡󠄧󠄦󠄦󠄤󠄢󠄣󠄧󠄧󠄨󠄬󠅒󠅢󠄟󠄮󠄐󠄼󠅟󠅗󠅙󠅞󠄬󠅒󠅢󠄟󠄮󠅄󠅙󠅝󠅕󠄪󠄡󠄧󠄦󠄦󠄤󠄢󠄣󠄧󠄧󠄨󠄬󠅒󠅢󠄟󠄮󠄞󠄧󠄣󠄞󠄢󠄡󠄦󠄞󠄡󠄡󠄩󠄬󠅒󠅢󠄟󠄮󠄐󠅅󠄹󠄴󠄪󠄾󠅟󠅤󠄐󠄼󠅟󠅗󠅙󠅞󠄬󠅒󠅢󠄟󠄮󠅄󠅙󠅝󠅕󠄪󠄡󠄧󠄦󠄦󠄤󠄢󠄣󠄧󠄧󠄨󠄬󠅒󠅢󠄟󠄮深的安全防护体系,才能确保企业数据资产的安全。

温馨提示: 本文最后更新于2025-12-19 22:14:29,某些文章具有时效性,若有错误或已失效,请在下方 留言或联系 沐光橙香
© 版权声明
THE END
喜欢就支持一下吧
点赞74赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容