首页
社区
课程
招聘
[原创]漏洞预警丨Redis stream 消费组 NACK 双重释放远程代码执行漏洞(CVE-2026-25243 补丁绕过)
发表于: 2天前 161

[原创]漏洞预警丨Redis stream 消费组 NACK 双重释放远程代码执行漏洞(CVE-2026-25243 补丁绕过)

2天前
161


一、漏洞概述


漏洞类型

认证后远程代码执行(RCE/ 双重释放

漏洞等级

高危

漏洞编号

CVE-2026-25243(补丁绕过变体)

漏洞评分

8.8CVSS v3.1AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

利用复杂度

影响版本

Redis 6.2.227.4.98.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期)!

      收藏
      免费 0
      打赏
      分享
      最新回复 (0)
      游客
      登录 | 注册 方可回帖
      返回