自主 AI 工具发现 Redis 中潜伏两年的远程代码执行漏洞
- 浏览次数 124
- 喜欢 0
Redis 官方修复了其阻塞客户端代码中的一处释放后重用(use-after-free)漏洞,该漏洞允许已认证用户在运行该数据库的服务器上执行任意操作系统命令。此漏洞是由一款专为大型代码库设计的自主 AI 漏洞挖掘工具发现的。
该漏洞编号为CVE-2026-23479,最早出现在 Redis 7.2.0 版本中,并在所有稳定分支中潜伏了两年多,直至 5 月 5 日才被修复。美国国家漏洞库(NVD)给出的 CVSS 3.1 评分为8.8 分(高危),Redis 官方 CVSS 4.0 评分为 7.7 分。漏洞由Xint Code 团队上报,完整的技术分析报告已公开。
云环境加剧风险
云服务的广泛部署让该漏洞风险进一步升级。安全厂商 Wiz 的分析显示,Redis 部署于绝大多数云环境中,且大部分实例未设置密码。虽然利用该漏洞需要认证会话,但在默认配置下,默认用户已拥有攻击链所需的全部权限。
漏洞技术原理
漏洞位于
src/blocked.c文件的unblockClientOnKey()函数中,该函数在键事件唤醒阻塞命令时触发。它通过processCommandAndResetClient()处理队列中的命令,随后继续使用同一个客户端指针。核心问题:
processCommandAndResetClient()函数的副作用可能会释放客户端内存,其函数注释也明确标注了这一点。但调用方忽略了返回值,继续读取已释放的内存结构,从而造成释放后重用漏洞(CWE-416)。据 Wiz 分析,该漏洞由两次代码提交共同导致:
- 2023 年 1 月的重构(PR #11012)添加了未做安全检查的调用;
- 2023 年 3 月的修改(PR #11568)在内存释放后增加了更多客户端访问操作。
这两处修改单独存在时均无危险,但合并后随 Redis 7.2.0 版本发布,并躲过了多轮安全审查。
攻击利用流程
完整的攻击利用分为三个阶段:
- 泄露堆地址:通过一行 Lua 脚本泄露堆内存指针;
- 构造内存布局:攻击者操控客户端内存限制,在内存中植入伪造的客户端结构;
- 劫持执行流程:利用 Redis 内存统计机制篡改全局偏移表(GOT),将
strcasecmp()函数指向系统命令执行函数system(),最终实现任意命令执行。
官方 Redis Docker 镜像因仅启用部分 RELRO 保护,导致 GOT 在运行时可写,大幅降低了攻击难度。
权限与利用条件
攻击需要已认证会话,且拥有
CONFIG SET、EVAL、流命令等权限。默认用户恰好拥有全部权限,这也是绝大多数部署环境的配置现状。背景与披露
Xint Code 团队已于 2025 年 12 月在伦敦举办的ZeroDay.Cloud 黑客大赛上演示了该漏洞的完整利用。Theori 公司表示,Xint Code 是一款专门针对大型代码库的自主 AI 安全检测工具。
Redis 官方称,目前暂无证据表明该漏洞在自身或客户环境中被实战利用,截至发稿也无公开在野攻击报告。但随着完整技术细节公开,后续被黑客利用的风险将急剧上升。
修复方案
请立即升级至对应修复版本(5 月 5 日发布):
- 7.2.x 系列:升级到 7.2.14
- 7.4.x 系列:升级到 7.4.9
- 8.2.x 系列:升级到 8.2.6
- 8.4.x 系列:升级到 8.4.3
- 8.6.x 系列:升级到 8.6.3
暂无法升级的临时缓解措施
- 禁止 Redis 暴露在公网,启用 TLS 加密;
- 收紧访问控制,避免单一角色同时拥有管理员、配置、脚本执行权限;
- 禁用 Lua 脚本功能,切断攻击第一步;
- 优先加固公网暴露实例,轮换共享凭证。
总结
CVE-2026-23479 是上月披露的 5 个 Redis 远程代码执行高危漏洞之一,也是继 2025 年 RediShell 漏洞后,又一个基于 Lua 脚本的已认证释放后重用漏洞。
两次代码提交埋下隐患,两年时间无人发现,代码审计全程失效,最终由 AI 工具在黑客大赛中曝光—— 这也成为 AI 驱动安全检测的标志性案例。
消息来源:thehackernews.com;
本文由 HackerNews.cc 翻译整理,封面来源于网络;
转载请注明“转自 HackerNews.cc”并附上原文