文章总结: CVE-2025-49844是Redis中一个潜伏13年的高危远程代码执行漏洞,CVSS评分10.0。该漏洞由Redis内嵌Lua解释器的Use-After-Free内存管理错误引起,攻击者可通过恶意Lua脚本触发UAF并逃逸Lua沙箱,在Redis服务器进程中执行任意代码。漏洞影响多个Redis版本,需升级至8.2.2、8.0.4、7.4.6或7.2.11及以上版本进行修复,临时可通过ACL限制EVAL/EVALSHA命令并确保Redis不暴露于公网。
综合评分: 92
文章分类: 漏洞分析,漏洞预警,WEB安全,漏洞POC,解决方案
潜伏13年!CVSS 评分高达 10.0!Redis高危RCE漏洞(CVE-2025-49844)复现
原创
m3x1
梦醒安全
2025年12月10日 08:00
湖北
免责声明:本公众号内容仅用于知识分享和学习,由于传播、利用本公众号所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号梦醒安全及作者不为此承担任何责任,一旦造成后果请自行承担!
PART.01
前言
CVE-2025-49844是一个极其严重的Redis安全漏洞,结合了内存管理错误(UAF)与沙箱逃逸,可导致远程代码执行。其影响范围覆盖多个主流Redis版本系列。
PART.02
介绍
漏洞介绍
漏洞编号:CVE-2025-49844
Redis 是一个开源的内存数据库,持久化在磁盘上。这是一个潜伏 13 年的、由 Use-After-Free(UAF,即“释放后使用”)引发的严重远程代码执行(RCE)漏洞,CVSS 评分高达 10.0(满分),属于极高危漏洞。漏洞根源在于 Redis 内嵌的 Lua 5.1 解释器(deps/lua/src/lparser.c),攻击者可通过发送恶意构造的 Lua 脚本,操控垃圾回收机制,触发释放后使用(UAF)错误,进而逃逸 Lua 沙箱,在 Redis 服务器进程中执行任意代码,甚至完全控制主机系统,从而窃取、擦除或加密敏感数据,劫持资源,并在云环境中进行横向移动。
漏洞原因
漏洞的本质是内存管理错误与沙箱逃逸的结合。
漏洞的核心在于Redis的Lua脚本引擎与Redis自身内存管理交互时存在缺陷。当Lua脚本调用redis.call()等函数操作Redis数据时,Lua变量会与底层的Redis内存对象(redisObject)建立关联。Redis和Lua均有独立的垃圾回收(GC)机制,但在复杂脚本执行场景下,时序控制不当可能导致Lua虚拟机仍持有redisObject引用时,Redis的GC错误地提前释放该对象内存。后续脚本若继续通过原引用访问已释放内存,即触发UAF。攻击者通过精心构造的Lua脚本可操控此过程,篡改内存内容。
根源在于Redis Lua解析器的内存管理缺陷:
LexState * luaY_parser(lua_State *L, ZIO *z, Mbuffer *buff, const char *name) {
// 为脚本名创建TString对象
TString *tname = luaS_new(L, name);
// 关键缺陷:TString未被压栈锚定,不属于GC根对象
luaX_setinput(L, &ls, z, tname);
// 解析过程中若触发垃圾回收,tname可能被提前释放
// 后续词法器仍持有该指针,形成Use-After-Free
return &ls;
}
关键问题:TString对象未被压入Lua栈进行锚定,导致其不具备GC根对象属性。当垃圾回收触发时,该对象可能被提前释放,但后续解析过程仍持有该指针,形成Use-After-Free。
PART.03
影响范围
• 6.2.20 ≤ Redis < 7.2.11
• 7.2.11 ≤ Redis < 7.4.6
• 7.4.6 ≤ Redis < 8.0.4
• 8.0.4 ≤ Redis < 8.2.2
PART.04
利用条件
成功利用需同时满足以下条件:
身份验证访问:攻击者需具备Redis实例访问权限(无论通过密码认证或未授权访问)。
Lua脚本功能启用:Redis默认启用EVAL/EVALSHA命令,若未通过ACL禁用即可被利用。
特定内存状态:UAF触发依赖堆内存的特定布局,需通过大量对象创建与销毁塑造
PART.05
漏洞复现
漏洞环境搭建
使用docker搭建Redis 7.2.0版本
git clone https://github.com/raminfp/redis_exploit.git
cd redis_exploit
docker-compose up -d
漏洞复现
POC:
https://github.com/raminfp/redis_exploit/blob/main/exploit_poc.py
使用方式:
python3 exploit_poc.py -h
# Check vulnerability only
python3 exploit_poc.py -H localhost -p 6380 -m check
# Run basic UAF test
python3 exploit_poc.py -H localhost -p 6380 -m basic
# Test sandbox escape
python3 exploit_poc.py -H localhost -p 6380 -m sandbox
# Test advanced memory corruption
python3 exploit_poc.py -H localhost -p 6380 -m advanced
# Run all tests
python3 exploit_poc.py -H localhost -p 6380 -m all
# With authentication
python3 exploit_poc.py -H localhost -p 6380 -a "password" -m all
PART.06
修复建议
1、升级Redis至已修复的安全版本
2、开源版/社区版:8.2.2、8.0.4、7.4.6或7.2.11及以上版本
临时解决:
1、建议通过设置访问控制列表 (ACL) 来限制 EVAL 和 EVALSHA 命令,从而阻止用户执行 Lua 脚本。此外,务必确保只有受信任的身份才能运行
Lua 脚本或任何其他潜在风险命令。
2、不要将其 Redis 实例暴露在互联网上,并使用强身份验证来保护
PART.07
往期推荐
往期好文
QQ高危漏洞(QVD-2025-45847)复现,速查你的版本!
【漏洞复现】React(next.js)远程代码执行漏洞(CVE-2025-55182)
一款Next.jsRCE漏洞检测工具,这款Chrome扩展让Next.js App Router无处遁形
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:梦醒安全 m3x1《潜伏13年!CVSS 评分高达 10.0!Redis高危RCE漏洞(CVE-2025-49844)复现》