-
-
[原创]漏洞预警丨Redis stream 消费组 NACK 双重释放远程代码执行漏洞(CVE-2026-25243 补丁绕过)
-
发表于: 2天前 161
-
一、漏洞概述
漏洞类型 | 认证后远程代码执行(RCE)/ 双重释放 |
漏洞等级 | 高危 |
漏洞编号 | CVE-2026-25243(补丁绕过变体) |
漏洞评分 | 8.8(CVSS v3.1,AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H) |
利用复杂度 | 低 |
影响版本 | Redis 6.2.22、7.4.9、8.6.4(< 8.8.0) |
利用方式 | 远程(需认证) |
POC/EXP | 已公开 |
近期,互联网上披露了 Redis stream 消费组(consumer group)持久化加载过程中存在 streamNACK 双重释放漏洞。攻击者在获得合法认证凭据后,可通过 RESTORE 投递构造好的 RDB 流对象,触发消费组共享 NACK 双重释放,进而结合 jemalloc tcache 双重分配实现任意地址读写,最终在 redis-server 进程内执行任意系统命令。为避免您的业务受影响,建议您及时开展安全风险自查。
Redis 是当前最广为使用的开源内存键值数据库之一,常被用作缓存、消息队列与会话存储,在金融、电商、互联网等行业的关键业务中大量部署。Redis 默认以长驻进程运行,且生产环境普遍直接暴露或通过内网可达 6379 端口,一旦被攻陷可直接导致宿主机沦陷。
据描述,该漏洞根因在于 rdbLoadObject 加载 stream 消费组 PEL(待处理条目)时,将同一个全局 PEL 的 streamNACK 指针的 consumer 字段先后指向两个不同的 consumer,缺少重复归属校验。如此一来,同一个 64 字节的 streamNACK 被两个 consumer 共享;当先后 XGROUP DELCONSUMER 删除这两个 consumer 时,该结构被释放两次,造成 jemalloc tcache bin-64 双重释放。攻击者利用该双重释放,通过精心构造 SETEX/SET/APPEND/SETRANGE 序列,使受害 sds 与已释放 chunk 别名,构造伪造的 kvobj,进而以 GETRANGE/SETRANGE 实现任意地址读、任意地址写;再借助 Lua string.format 闭包作为地址预言机泄露 PIE 基址与 libc 基址,最终覆写 dict.hashFunction 指向 jmp *[rdi+0x78] gadget,使哈希函数调用退化为 system(trigger),完成命令执行。利用完成后恢复 hashFunction,服务进程保持正常对外服务,隐蔽性强。该利用链对官方镜像二进制偏移为启动不变量,且当前版本无需 DEBUG 命令即可完成全链路。
漏洞影响的产品和版本:
Redis 6.2.22(官方镜像 redis:6.2.22,已实测复现)
Redis 7.4.9(官方镜像 redis:7.4,已实测复现)
Redis 8.6.4(官方镜像 redis:8.6,已实测复现)
更广泛地,凡存在该消费组 PEL 加载逻辑且未应用修复的版本均受影响;Redis 8.8.0 及以上版本已通过 PR #15081 重构修复,不受影响。
二、漏洞复现

三、资产测绘
据 daydaymap 数据显示互联网存在2,281,980个资产,风险资产分布情况如下。
全球分布:

国内分布:

四、解决方案
升级修复(首选):
将 Redis 升级至 8.8.0 及以上版本。该版本已通过 PR #15081 重构修复此类问题,从根本消除攻击面。
应用补丁:
对无法立即升级的版本,合并官方修复补丁(commit 3ce48f92b6e9be42c41c40a4efabe97f8224d9c4)。补丁在 rdbLoadObject 加载 stream 消费组 PEL 时新增 nack->consumer != NULL 守卫,当某个 streamNACK 已被先前 consumer 认领时,直接判定 RDB 损坏并中止加载(报 Bad data format),阻断共享 NACK 的形成。
访问控制加固:
强制强口令认证(requirepass 或 ACL),避免弱口令、空口令暴露;
禁止 Redis 直接暴露在公网,仅允许受信内网访问,并通过安全组/防火墙限制 6379 端口来源;
使用 ACL 最小权限,对非必要客户端关闭 RESTORE、EVAL、XGROUP 等危险命令,关闭 DEBUG 命令(enable-debug-command no,Redis 7+ 默认关闭);
禁用或限制 Lua、CONFIG、MODULE 等高危指令面。
运行时降权:
以低权限专用用户运行 redis-server,配合只读文件系统与 capabilities 收敛,限制 RCE 后横向影响。
监测与自查:
排查 Redis 是否使用了不受影响版本;审计是否存在异常 RESTORE/XGROUP DELCONSUMER 调用模式;关注 redis-server 异常崩溃或异常子进程派生行为。
五、参考链接
Redis 官方仓库与修复 PR #15081: CVE-2026-25243(本漏洞为其补丁绕过变体) 官方修复补丁提交:commit 3ce48f92b6e9be42c41c40a4efabe97f8224d9c4(Reject corrupt stream RDB with shared NACK across consumers)
六、ddpoc链接
fabK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2V1k6s2m8G2j5#2)9J5k6h3y4G2L8g2)9J5c8V1c8h3b7W2)9J5k6o6t1H3x3U0k6Q4x3X3b7I4x3e0f1H3y4g2)9J5k6h3S2@1L8h3H3`.
[招生]科锐逆向工程师培训(2026年7月3日实地,远程教学同时开班, 第56期)!