漏洞预警丨Redisstream消费组NACK双重释放远程代码执行漏洞(CVE-2026-25243补丁绕过)"

admin 2026-10-20 02:19:03 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

cover_image

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

原创

烽火台实验室
烽火台实验室

Beacon Tower Lab

2026年7月23日 17:27
北京

在小说阅读器读本章

去阅读

一、漏洞概述

漏洞类型 认证后远程代码执行(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:https://github.com/redis/redisCVE-2026-25243(本漏洞为其补丁绕过变体)官方修复补丁提交:commit 3ce48f92b6e9be42c41c40a4efabe97f8224d9c4(Reject corrupt stream RDB with shared NACK across consumers)

六、ddpoc链接

https://www.ddpoc.com/DVB-2026-11505.html

    漏洞预警丨Redisstream消费组NACK双重释放远程代码执行漏洞(CVE-2026-25243补丁绕过)" 网络安全文章

    漏洞预警丨Redisstream消费组NACK双重释放远程代码执行漏洞(CVE-2026-25243补丁绕过)"

    Redisstream消费组NACK双重释放远程代码执行漏洞(CVE-2026-25243补丁绕过)被披露,影响Redis6.2.22、7.4.9、8.6.4等版本。攻击者需认证,利用复杂度低,POC已公开。根因是rdbLoadObject加载PEL时缺少重复归属校验,导致双重释放。建议立即升级至8.8.0或应用补丁,并加强访问控制与运行时降权。
    24GB显存塞不下大模型?vLLM/llama.cpp/Ollama程序员选型指南" 网络安全文章

    24GB显存塞不下大模型?vLLM/llama.cpp/Ollama程序员选型指南"

    本文基于RTX409024GB显存实测,对比vLLM、llama.cpp和Ollama三款大模型部署工具。核心结论是:vLLM适合小模型高吞吐线上服务,llama.cpp通过分层卸载支持超大模型但速度慢,Ollama易用但调试能力弱。建议小模型用vLLM,大模型用llama.cpp,Ollama仅用于快速测试。企业落地需先评估是否必须本地部署,并按模型参数量匹配框架。
    web选手入门pwn(37)——bllhl_canary" 网络安全文章

    web选手入门pwn(37)——bllhl_canary"

    本文介绍了一道CTFpwn挑战,涉及利用格式化字符串泄露libc地址和canary值,绕过自定义canary校验实现栈溢出。关键步骤包括通过gdb调试确定偏移,泄露v2、v9和系统canary,最终构造ROP链执行system(sh)获取flag。文章提供了完整exp,适合入门者学习canary绕过技巧。
    持续报名|一文玩转南开大学DataConAI夏令营" 网络安全文章

    持续报名|一文玩转南开大学DataConAI夏令营"

    该文宣传2026年DataConAI安全夏令营,由南开大学密码与网络空间安全学院主办,8月10-16日在津南校区举行。汇聚复旦、北理工等高校学者及腾讯、阿里等企业专家,课程涵盖大模型安全、数据隐私等。报名费5000元,截止7月31日,限额50人,提供食宿。
    评论:0   参与:  0