您的位置: 新闻资讯 > 行业动态 > 正文

Apache HTTP/2 资源管理错误漏洞(CVE-2023-44487)修复全解析(图文)


来源:mozhe 2024-12-23

一、漏洞概述


在当今数字化时代,网络安全如同守护城堡的坚固城墙,至关重要。而 2023 年 10 月 14 日被深信服安全团队监测到的 Apache HTTP/2 资源管理错误漏洞(CVE-2023-44487),就像城墙中出现的一道隐秘裂缝,给众多网络应用带来了潜在危机。该漏洞被评定为高危级别,犹如一颗随时可能引爆的网络安全炸弹。
HTTP/2 作为 HTTP/1.1 的升级版网络协议,采用二进制协议并运用多路复用技术,极大地提升了数据传输效率,同时引入头部压缩、服务器推送和流优先级等新特性,为现代互联网应用的快速发展立下汗马功劳。然而,CVE-2023-44487 漏洞却利用了 HTTP/2 协议中的流取消功能。攻击者狡猾地通过 HEADERS 和 RST_STREAM 帧的组合,在单个连接中大量打包发送 HTTP 请求。就好比一群恶意的 “数据强盗”,在网络的高速公路上肆意横行,导致目标服务器每秒请求量如洪水般猛增,最终使服务器资源被迅速耗尽,陷入瘫痪状态,无法正常响应合法用户的请求,从而引发拒绝服务攻击。

二、影响范围



该漏洞影响范围广泛,涉及多个常用组件。在 Apache Tomcat 方面,从 11.0.0-M1 到 11.0.0-M11、10.1.0-M1 到 10.1.13、9.0.0-M1 到 9.0.80 以及 8.5.0 到 8.5.93 等版本均受影响。Apache Traffic Server 的 8.0.0 到 8.1.8 以及 9.0.0 到 9.2.2 版本也在受影响之列。此外,Go 语言的部分版本如小于 1.21.3 和 1.20.10 的,grpc-go 小于 1.58.3、1.57.1、1.56.3 的版本,jetty 小于 12.0.2、10.0.17、11.0.17、9.4.53.v20231009 的版本,Netty 小于 4.1.100.Final 的版本以及 nghttp2 小于 v1.57.0 的版本都受到该漏洞的威胁。这些组件在众多网络应用和服务中被广泛使用,使得大量系统面临风险。

三、修复方法

(一)更新组件版本


各组件的官方已发布最新版本,对于受影响的用户而言,及时更新升级到最新版本犹如给系统穿上了坚固的 “防护铠甲”,是抵御漏洞攻击的关键步骤。以 Apache Tomcat 为例,若当前使用的版本在受影响范围内,如 10.1.0-M1 到 10.1.13 之间的某个版本,就需要前往官方网站下载并安装最新版本。在下载过程中,要仔细核对版本号,确保获取的是修复了 CVE-2023-44487 漏洞的版本。安装时,需遵循官方提供的详细安装指南,如先停止正在运行的旧版本服务,然后备份相关配置文件,以防数据丢失,最后按照步骤完成新版本的安装与配置。同样,对于 Apache Traffic Server、Go 语言相关版本、grpc - go、jetty、Netty 以及 nghttp2 等组件,也应按照各自官方的指引,及时进行版本更新,确保系统的安全性。

(二)Nginx 配置调整


Nginx 作为一款广泛应用的服务器软件,其相关配置对缓解该漏洞有着重要作用。其中,keepalive_requests 和 http2_max_concurrent_streams 这两个配置项尤为关键。keepalive_requests 用于限制一个 HTTP/2 TCP 连接上请求的总数量。在 Nginx 1.19.7 及其之后的版本中,通过该配置项能有效约束连接上的请求量。例如,将其设置为默认值 1000 时,即使攻击者利用 HEADERS 和 RST_STREAM 帧序列发动快速重置攻击,Nginx 也能够把一个 TCP 连接上的请求总数量控制在 1000 个以内。这样一来,攻击者若想持续攻击,就不得不频繁新建 TCP 连接,从而增加了攻击的难度和成本。而 http2_max_concurrent_streams 配置项则定义了连接上的最大并发流数目。合理设置该值,可以在一定程度上限制攻击者同时发起的请求数量,避免服务器因过多并发请求而陷入瘫痪。在实际配置过程中,运维人员需要根据服务器的性能、预期的并发连接数以及业务需求等多方面因素综合考量,确定这两个配置项的最佳取值,以达到有效缓解漏洞风险的目的。

(三)防火墙与负载均衡器设置


防火墙在网络安全防护中扮演着 “守门卫士” 的重要角色。针对 CVE-2023-44487 漏洞,可以配置防火墙来阻挡恶意的 HTTP/2 请求。具体而言,可根据特定的攻击模式设置规则,如限制连接速率。通过设定单位时间内允许的最大连接数,能够有效遏制攻击者发起大规模的连接请求,防止服务器瞬间被海量请求淹没。还可以限制特定类型的请求,例如对 HEADERS 和 RST_STREAM 帧的频率进行限制,只允许正常业务范围内的请求通过,从而阻断攻击者利用漏洞构造的恶意请求序列。对于使用负载均衡器来处理 HTTP/2 请求的系统,确保负载均衡器已经更新到修复了该漏洞的版本同样不容忽视。负载均衡器更新后,能够在分发请求的过程中,对恶意请求进行识别和过滤,将合法请求合理分配到后端服务器,避免单个服务器因遭受攻击而导致整个系统瘫痪,保障系统的整体稳定性和可用性。

四、修复案例分析

(一)Geoserver 地图服务器修复案例


Geoserver 是一款常用的地图服务器,在开源系统中应用广泛,其采用官方二进制安装包部署,依赖 Java 环境运行。在一次甲方月度漏洞扫描中,发现 Geoserver 所依赖的 Jetty 存在漏洞,具体为 Jetty 9.4.53 版本以下受 Apache HTTP/2 拒绝服务漏洞(CVE-2023-44487)影响,而现场 Geoserver 版本为 2.24.0,对应的 Jetty 版本是 9.4.52。
问题排查时,首先确定了受影响的组件及版本信息。随后,尝试从 Geoserver 官网获取最新版本,发现其虽有 2.24.1 版本,但 Jetty 版本仍为 9.4.52,未解决该漏洞问题。于是决定手动替换 Jetty 的 jar 包来修复漏洞。
修复措施实施过程如下:从 Jetty 官网下载 zip 包,对照 Geoserver 发行版本中的 Jetty jar 包,分两步进行替换,共需替换 13 个 jar 包,并将 Jetty 中的 start.jar 包也替换到 Geoserver 发行包中。需要注意的是,start.ini 是 Jetty 的启动配置文件,此次使用 Jetty 官方包替换时,未对其进行替换,以保留 Geoserver 原有配置。替换完成后启动 Geoserver,却出现报错:java.lang.UnsupportedClassVersionError: org/geoserver/GeoserverInitStartupListener has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0。经排查发现是 Java 版本问题,由于替换的 Jetty 包是高版本 Java 编译的,所以需要将 Java 版本从原有的版本升级。根据 Java 版本和 class file version 的对应关系,确定最低需要升级到 Java 11,查看 JDK 下载页面后,选择安装 Java 17(因推荐版本最低为 17 且向下兼容)。在本地电脑安装 Java 17 测试后,Geoserver 可正常运行,修复成功。

(二)某电商平台修复案例


某电商平台采用 Apache Tomcat 作为其 Web 应用服务器,在得知 CVE-2023-44487 漏洞后,迅速展开修复工作。
问题排查阶段,运维团队首先检查了 Apache Tomcat 的版本,发现其使用的版本为 10.1.5,在受影响的版本范围内(10.1.0-M1 到 10.1.13)。确定受影响后,开始制定修复方案。
修复措施实施时,选择更新 Apache Tomcat 组件版本。运维团队前往官方网站下载对应版本的最新版 Tomcat。下载前仔细核对版本号,确保为修复了 CVE-2023-44487 漏洞的版本。下载完成后,按照官方提供的详细安装指南进行操作。先停止正在运行的旧版本 Tomcat 服务,然后备份相关配置文件,包括 server.xml、web.xml 等重要配置文件,以防数据丢失。接着,删除旧版本的 Tomcat 文件夹,将下载的新版本解压到相应目录。最后,根据备份的配置文件,对新版本的 Tomcat 进行配置,如设置端口号、虚拟主机等参数。
在完成上述修复措施后,进行效果验证。运维团队使用性能测试工具模拟正常用户访问流量,同时使用漏洞检测工具模拟 CVE-2023-44487 漏洞攻击场景,观察服务器的响应情况。经过长时间的测试,发现服务器在正常流量下响应正常,且在模拟漏洞攻击时,不再出现因大量请求导致的服务器资源耗尽和拒绝服务现象,表明修复措施有效,成功解决了该漏洞问题,保障了电商平台的稳定运行。

五、安全建议与总结


在网络安全的征程中,Apache HTTP/2 资源管理错误漏洞(CVE-2023-44487)犹如一场突如其来的风暴,给众多网络应用带来了严峻挑战。但通过及时有效的修复措施,我们能够筑起坚固的防线,抵御这一威胁。
首先,定期检查各组件官方发布的安全公告是必不可少的。安全公告如同航海中的灯塔,为我们指引方向,及时告知我们系统中可能存在的安全隐患以及相应的修复版本信息。只有密切关注这些信息,我们才能在漏洞出现的第一时间做出反应,迅速采取措施进行修复,避免遭受攻击。
其次,安全审计工作应成为网络管理的常态。就像定期对房屋进行全面检查,查找可能存在的漏洞或弱点一样,安全审计能够深入系统内部,全面排查潜在的安全风险。通过对网络架构、系统配置、应用程序等多方面进行细致审查,及时发现并修复可能被攻击者利用的薄弱环节,从而将安全隐患扼杀在摇篮之中。
再者,在进行系统更新或配置调整时,务必做好数据备份工作。数据如同珍贵的宝藏,一旦丢失可能会给我们带来巨大的损失。无论是更新组件版本,还是调整 Nginx 配置或防火墙规则,都应先对相关数据进行备份,确保在操作过程中即使出现意外情况,也能够迅速恢复数据,保障业务的正常运行。
CVE-2023-44487 漏洞的存在提醒着我们,网络安全是一场永无止境的战斗。我们必须时刻保持警惕,采取积极有效的防御措施,才能确保网络系统的稳定与安全,为用户提供可靠的服务,在数字化浪潮中稳健前行。
 

墨者安全 防护盾

墨者安全作为专业级别安全防护专家,在应对 Webshell 风险隐患方面展现出了卓越的能力。其拥有全面的检测机制,能够精准识别 Webshell 的各种类型和变体,无论是复杂的大马,还是隐蔽的内存马,都难逃其敏锐的监测。
墨者安全防护盾具备强大的实时监控功能,对服务器的各项活动进行 7*24 小时不间断的监视。一旦发现任何可疑的 Webshell 活动迹象,立即发出警报,并迅速采取隔离和清除措施,将风险扼杀在萌芽状态。
在防护策略上,墨者安全防护盾采用了多层次的防御体系。不仅能够在网络层面阻挡外部的恶意访问和攻击,还能深入系统内部,对服务器的文件系统、进程等进行深度检查和保护,确保 Webshell 无法植入和运行。
同时,墨者安全防护盾拥有快速的应急响应能力。当 Webshell 攻击事件发生时,专业的安全团队能够迅速介入,进行深入的分析和处理,最大程度减少攻击带来的损失,并帮助用户快速恢复服务器的正常运行。
墨者安全防护盾还注重用户教育和培训,为用户提供关于 Webshell 防范的专业知识和最佳实践,帮助用户提升自身的安全意识和防范能力,共同构建坚实的网络安全防线。

热门文章

X

7x24 小时

免费技术支持

15625276999


-->