Squid ESI拒绝服务处理ESI响应漏洞CVE-2024-45802
Squid cache(简称为Squid)是一个流行的自由软件(GNU通用公共许可证)代理服务器和 Web 缓存服务器,发展历史悠久且功能完备。
一、基本情况
Squid 主要设计用于在 Unix 一类系统运行,作为一个开源的Web缓存代理,除了 HTTP 外,对于 FTP 与 HTTPS 的支持也表现的相当好。
Squid 可作为网页服务器前置cache服务器缓存相关请求提高Web服务器速度,或共享网络资源而缓存万维网,域名系统和其他网络搜索。
栋科技漏洞库关注到Squid发布6.10版本,修复一个允许受信任服务器在处理ESI响应内容时执行拒绝服务漏洞,追踪为CVE-2024-45802。
二、漏洞分析
CVE-2024-45802允许受信任服务器在处理 ESI 响应内容时执行拒绝 服务,影响代理服务的所有域以及 受影响期间使用代理的所有客户端。
由于输入验证、预期生命周期内资源过早释放及有效生命周期后未释放资源错误,易受可信服务器针对所有使用代理客户端拒绝服务攻击。
该漏洞仅限于充当反向代理的Squid, ESI功能已在构建时启用,该功能在3.0到6.9所有Squid版本中默认启用 ,从6.10版本开始默认禁用。
CVE-2024-45802漏洞是Squid ESI mod_http2 中存在的一个缺陷,当客户端重置HTTP/2流(RST frame)的时候,会存在一个时间窗口。
在该时间窗口内,请求的内容资源不会被立即回收,相反的内容释放会被推迟到连接关闭的时候,此时客户端可不断发送新请求和重置。
如此使其始终保持繁忙和打开状态导致内存占用不断增长。尽管连接关闭时所有资源都会被回收,但该进程可能在连接关闭前耗尽资源。
该该漏洞由 Opera Software 的 Joshua Rogers 发现并上报 ,CVSS评分为7.5,具体时间线如下:
2021-02-28 05:25:48 UTC 初始报告
2024-03-13 08:01:12 UTC ESI 在 v6 中默认禁用
2024-06-08 13:28:58 UTC Squid 6.10 发布,ESI 已禁用
三、影响范围
Squid版本:3.0(含)~6.9(含)
四、修复建议
目前该漏洞已经在 Squid 版本 6.10 的默认构建配置中修复,受影响用户可升级到以下版本:
Squid 版本 >= 6.10
五、参考链接
https://github.com/squid-cache/squid/security/advisories/GHSA-f975-v7qw-q7hj