HTTP/2 Rapid Reset攻击对F5 NGINX产品的影响

F5生态系统 | 2023年10月10日

本篇博文重点介绍近期发现的一个与HTTP/2协议相关的漏洞。在特定条件下,攻击者可利用此漏洞,对NGINX Open Source、NGINX Plus以及其他实现HTTP/2规范服务器端部分的相关产品发起拒绝服务攻击。为保护系统免受此类攻击,建议立即更新NGINX配置。

HTTP/2流重置的问题

与服务器建立连接后,HTTP/2协议允许客户端发起并发流来交换数据。与该协议的早期版本不同,如果最终用户决定离开当前页面,或因任何其他原因停止数据交换,HTTP/2可通过向服务器发送RST_STREAM帧来取消相应的流,避免服务器执行不必要的工作。

攻击者可在已建立的连接上发起大量HTTP/2流并迅速取消,从而利用该漏洞,绕过服务器的最大并发流限制。出现这种情况是因为传入流的重置速度快于后续流的到达速度,使客户端无需达到服务器配置的阈值即可使其过载。

对NGINX的影响

出于性能和资源消耗方面的考虑,NGINX默认将并发流数量限制为128(请参阅http2_max_concurrent_streams)。此外,为了在网络与服务器性能之间实现适当平衡,NGINX默认允许客户端通过HTTP keepalive保持HTTP连接,最多可处理1,000个请求(请参阅keepalive_requests)。

通过采用默认的keepalive限制,NGINX可防止此类攻击。恶意行为者若创建更多连接来规避此限制,其行为会被标准的第4层监控和告警工具发现。

但是,如果为NGINX配置的keepalive值远高于默认值和建议值,攻击可能会耗尽系统资源。当流重置时,HTTP/2协议要求不得再通过该流向客户端返回任何后续数据。通常,重置仅会产生可忽略不计的服务器开销,主要来自妥善处理取消操作的任务。但是,绕过NGINX的流阈值后,客户端便可利用这部分开销,通过快速发起数千个流将其放大。这会导致服务器CPU使用率激增,使合法客户端无法获得服务。

在异常高的 keepalive 限制下,通过建立 HTTP/2 流并随后取消流来实施拒绝服务攻击

降低攻击暴露风险的步骤

作为功能完备的服务器和代理,NGINX为管理员提供了强大的拒绝服务攻击缓解工具。要充分利用这些功能,必须对NGINX配置文件进行以下更新,以尽可能缩小服务器的攻击面:

我们还建议将以下安全措施作为最佳实践:

  • limit_conn 可限制单个客户端允许建立的连接数。建议添加此指令并进行合理配置,以兼顾应用性能和安全性。
  • limit_req 可限制在给定时间内处理的单个客户端请求数量。应添加此指令并进行合理设置,以平衡应用性能与安全性。

我们的应对措施

我们试验了多种缓解策略,从而了解这种攻击可能会对广泛的客户和用户群体产生怎样的影响。虽然这项研究证实,NGINX已具备避免此类攻击所需的全部工具,但我们仍希望采取进一步措施,确保确实需要采用超出建议规范的配置来设置NGINX的用户能够顺利完成配置。

我们的调查找到了一种方法,可提高服务器在HTTP/2协议理论上可能遭受的各种洪泛攻击下的韧性。因此,我们发布了一个补丁,以增强系统在这些情况下的稳定性。为防范此类威胁,建议NGINX Open Source用户使用最新代码库重新构建二进制文件,并建议NGINX Plus客户立即更新至最新软件包(R29p1或R30p1)。

补丁的工作原理

为确保及早检测针对NGINX的洪泛攻击,该补丁限制了单个事件循环中可引入的新流数量。此限制设为通过http2_max_concurrent_streams指令配置值的两倍。即使从未达到最大阈值,此限制仍然适用,例如在发送请求后立即重置流时(本次攻击即属此类情况)。

受影响的产品

此漏洞会影响NGINX HTTP/2模块(ngx_http_v2_module)。如需了解您使用的特定NGINX或F5产品是否可能受到影响,请访问:https://my.f5.com/manage/s/article/K000137106

有关CVE-2023-44487(HTTP/2快速重置攻击)的更多信息,请参阅:https://www.cve.org/CVERecord?id=CVE-2023-44487

致谢

感谢Cloudflare、Amazon和Google在发现此漏洞以及协作识别和缓解此漏洞方面所做的贡献。

本博文在最初发布日期之后进行了更新,补充了更多修复详情并提升了表述清晰度。

分享
标签: 2023, F5 NGINX

关于作者

相关博客文章

F5纪念2021年世界艾滋病日
F5生态系统 | 2021/12/01

F5纪念2021年世界艾滋病日

值此世界艾滋病日,F5郑重承诺,将与员工、客户、社区和合作伙伴共同努力,消除社会对HIV感染者仍然存在的污名与偏见。

Thingbot正转变为攻击平台
F5生态系统 | 2018/11/29

Thingbot正转变为攻击平台

Lori MacVittie重点介绍了F5 Labs对2018年1月至6月全球物联网设备攻击的研究,并指出了其中令人警醒的影响。物联网设备不仅持续遭到利用,还被转变为攻击平台,这意味着攻击者可以更充分地利用这个必然增长的市场。

借助F5全新Quick Start,在AWS上快速开展业务
F5生态系统 | 2018/11/20

借助F5全新Quick Start,在AWS上快速开展业务

在AWS re:Invent开幕前,我们很高兴与大家分享F5与AWS之间全新的Quick Start集成。F5的Tom Atkins将介绍该服务如何启动、配置和运行在AWS上部署工作负载所需的计算、网络、存储及其他AWS服务。

为什么声明式模型对NetOps自动化至关重要?
F5生态系统 | 2018/04/30

为什么声明式模型对NetOps自动化至关重要?

为什么声明式模型对NetOps自动化至关重要?阅读F5博客,了解基础设施即代码如何简化网络扩展。

开源聚焦:F5基础设施即代码与多云可管理性
F5生态系统 | 2017/11/16

开源聚焦:F5基础设施即代码与多云可管理性

开源聚焦:基础设施即代码与多云。阅读博客,了解模板和Terraform如何简化F5应用服务的部署。

破解IT“无解困局”的答案:私有云
F5生态系统 | 2016/09/12

破解IT“无解困局”的答案:私有云

破解IT“无解困局”的答案:私有云。阅读F5博客,了解本地部署的敏捷性如何化解安全与速度难以兼顾的问题。