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 功能以及实施严格的身份验证控制可以降低风险。






![[HW]复盘攻防,再聊安全-微慑信息网-VulSee.com](http://vulsee.com/wp-content/uploads/2019/06/544.png)





![微信小程序解密测试[20201223]-微慑信息网-VulSee.com](http://vulsee.com/wp-content/uploads/2020/12/524.png)

![[八卦] 王婷婷—揭秘一个大三女生的性爱录像-微慑信息网-VulSee.com](http://free.86hy.com/crack/pic/1.jpg)
![[随笔]今天国际警察节-微慑信息网-VulSee.com](http://photo.sohu.com/20041017/Img222528326.jpg)

青云网
