文章总结: Redis严重漏洞CVE-2026-23631(DarkReplica)利用复制子系统中的释放后使用(UAF)条件,可使经身份验证的攻击者通过滥用slaveof命令、操纵同步过程及触发Lua函数引擎中的竞态条件,最终实现远程代码执行并完全控制服务器。Redis官方已于2026年5月5日发布补丁修复,建议受影响组织立即更新补丁,并限制复制配置、关闭不必要的Lua功能以降低风险。 综合评分: 88 文章分类: 漏洞分析,漏洞预警,应急响应,红队,web安全
Redis 严重漏洞可能允许攻击者执行代码并劫持服务器
暗镜
2026年6月15日 06:00 北京
在小说阅读器读本章
去阅读
Redis 中一个严重漏洞(编号CVE-2026-23631,简称“DarkReplica”)利用复制子系统中复杂的释放后使用 (UAF) 条件,使经过身份验证的部署面临远程代码执行 (RCE) 的风险。该漏洞由安全研究员Yoni Sherez 在 ZeroDay 活动中发现。
在 Cloud 2025 竞赛中,该缺陷展示了如何将 Redis 的内部 Lua 执行模型和复制逻辑链接在一起,从而实现对服务器的完全控制。
该漏洞专门针对攻击者已拥有有效身份验证凭据的 Redis 部署。攻击者通过滥用 SLAVEOF 命令,可以强制目标 Redis实例成为恶意控制器服务器的副本。
这为通过操纵同步过程和触发 Redis Lua 函数引擎中的不安全内存处理来进行攻击奠定了基础。
Redis 支持两种 Lua 执行模型:传统的脚本引擎(EVAL/EVALSHA)和较新的函数引擎(FUNCTION LOAD/FCALL)。后者是此漏洞的核心所在。
通过此引擎注册的函数具有持久性和跨集群节点的同步性,这使其成为一个强大的攻击面。虽然 Redis 强制执行沙箱和执行约束,但其单线程架构在处理长时间运行的脚本时会引入一些特殊情况。
为了防止阻塞,Redis 使用 Lua hook 机制定期检查超时并通过 processEventsWhileBlocked() 处理待处理的事件。
这种机制允许在脚本运行时执行有限的命令。然而,存在一个关键的疏忽:虽然大多数客户端命令在此状态下受到限制,但来自控制器服务器的复制流量仍然会被处理,而不会验证 Lua 函数是否正在执行。
这会造成竞态条件。攻击者可以执行一个故意运行缓慢的 Lua 函数,例如无限循环,然后从恶意主节点触发 FULLRESYNC 操作。
一旦控制权返回到仍在运行的 Lua 函数,它会使用已释放的 lua_State 继续执行,从而导致典型的释放后使用(use-after-free)情况。这种漏洞使得攻击者能够破坏内存,最终获得任意代码执行权限。
由于 Redis 使用 jemalloc 内存分配机制,因此利用此漏洞需要谨慎地操作堆内存。攻击者利用 Lua 的 tostring() 等原语来泄露堆地址,并通过控制内存分配来回收已释放的内存区域。例如,攻击者可以释放协程对象并将其替换为攻击者控制的数据
Redis 于 2026 年 5 月 5 日修复了该漏洞,并发布了适用于所有受支持版本的补丁。受影响的版本包括 Redis 7.2.0 至 7.2.13、7.4.0 至 7.4.8、8.2.0 至 8.2.5、8.4.0 至 8.4.2 以及 8.6.0 至 8.6.2。已修复的版本为 7.2.14、7.4.9、8.2.6、8.4.3 和 8.6.3。
在生产环境中运行 Redis 的组织应立即优先进行补丁更新。此外,限制复制配置、关闭不必要的 Lua 功能以及实施严格的身份验证控制可以降低风险。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:暗镜 《Redis 严重漏洞可能允许攻击者执行代码并劫持服务器》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论