章
目
录
最近,流行的开源内存数据结构存储系统Redis曝出了一个高严重性漏洞,编号为CVE-2025-21605。这个漏洞可不简单,通过通用漏洞评分系统(CVSS)评估,得分高达7.5,意味着它能给系统带来极大的安全威胁。从2.6版本起的所有Redis版本都受其影响,尤其是那些暴露在网络上的Redis实例,更是“岌岌可危”。
一、漏洞原理:输出缓冲区管理的“大坑”
这个漏洞的根源,在于Redis输出缓冲区管理的设计存在问题。默认情况下,Redis有个叫client-output-buffer-limit的配置,它对普通客户端的输出缓冲区没有设置限制。这就好比给一个容器没有设定容量上限,东西可以无节制地往里装。
在实际运行中,这会导致输出缓冲区持续增大,直至把系统所有的可用内存都消耗殆尽。更要命的是,利用这个漏洞,攻击者根本不需要进行身份验证。哪怕Redis服务器设置了密码保护,攻击者只要发送不包含密码的请求,就能触发漏洞。每次身份验证失败,服务器都会返回“NOAUTH”响应,这些响应会在输出缓冲区不断堆积,越来越多,最后把内存撑爆,导致服务器崩溃或者无法正常提供服务,也就是所谓的拒绝服务(DoS)。
Redis的维护者在安全公告里也明确表示:未经身份验证的客户端能让输出缓冲区无限制扩大,直到服务器内存耗尽或者被迫停止运行。这个漏洞是由安全研究员polaris-alioth披露的,这也体现了安全社区和Redis维护者之间的紧密合作,及时把潜在风险告知大家。
二、漏洞风险
从风险因素来看,这个漏洞的“杀伤力”不容小觑。
- 受影响产品范围广:涵盖了从2.6版本到特定修复版本之前的所有Redis版本,无论是开源软件/社区版(OSS/CE),还是Redis Stack都未能幸免。
- 攻击条件简单:攻击者利用该漏洞不需要特殊权限,也不用和用户交互,只要能访问Redis实例的网络就行,攻击途径基于网络,而且难度低。
- 影响系统可用性:虽然这个漏洞不会直接窃取或篡改数据,不影响数据的机密性和完整性,但却能直接让系统瘫痪,导致服务无法正常使用,所以被评定为高严重性等级。
从技术层面分析,问题出在Redis处理客户端连接的机制上。每当收到未经授权的命令,服务器就会返回错误响应,这些响应都会占用输出缓冲区的内存。可Redis没有对输出缓冲区进行有效的限制,导致这些响应不断累积,最终引发内存耗尽的危机。
三、受影响版本及修复建议
受该漏洞影响的Redis版本众多,具体如下:
- Redis开源软件/社区版(OSS/CE):7.4.3及以上版本、7.2.8及以上版本、6.2.18及以上版本已修复。
- Redis Stack:7.4.0-v4及以上版本、7.2.0-v16及以上版本、6.2.6-v20及以上版本已修复。
对于使用Redis云服务的用户来说,算是比较幸运,云服务提供商已经完成了修复,用户不用额外操作。但对于自行管理Redis部署的企业,可就不能掉以轻心了,应尽快将Redis升级到上述已修复的版本,及时补上这个“安全窟窿”。
要是因为各种原因,暂时没办法升级,Redis维护者也给出了一些替代的缓解策略:
- 实施网络访问控制:借助防火墙、iptables或者云安全组,阻止未经身份验证的连接访问Redis服务器,就像给服务器加了一道“防护门”。
- 启用TLS并要求客户端证书验证:传输层安全协议(TLS)可以加密数据传输,客户端证书验证则进一步提高访问的安全性,双重保障服务器的安全。
- 为客户端配置适当的输出缓冲区限制:这是从根源上解决问题,给输出缓冲区设定一个合理的“容量”,避免内存被无节制地消耗。
Redis官方也提醒大家,这个漏洞的利用前提是Redis端点暴露在公网环境。所以,企业在部署Redis服务器时,一定要重视网络安全措施,评估自身面临的风险,尽快采取合适的缓解手段,保障系统的稳定和安全。