一、漏洞概述
什么是 Apache HTTP/2 资源管理错误漏洞
Apache HTTP/2 资源管理错误漏洞是指在 Apache 的 HTTP/2 资源管理中,攻击者通过恶意请求可以使系统陷入拒绝服务状态。受影响产品包括多个.NET 和 Windows 版本,甚至包括 Tomcat 集成的 HTTP/2 支持。
例如,Apache Tomcat 安全团队就曾报告过一个 Tomcat HTTP/2 DoS 漏洞。HTTP/2 请求的特制序列可能会在数秒内引发较高的 CPU 使用率,如果有足够数量的此类请求在并发 HTTP/2 连接上进行连接时,服务器可能无响应,即造成拒绝服务。该漏洞严重等级定为 “重大”(Important),编号 CVE-2020-11996。受影响的软件版本包括 Apache Tomcat 10.0.0-M1 到 10.0.0-M5、Apache Tomcat 9.0.0.M1 到 9.0.35、Apache Tomcat 8.5.0 到 8.5.55。官方给出的缓解方法是升级到 Apache Tomcat 10.0.0-M6 或更高版本、升级到 Apache Tomcat 9.0.36 或更高版本、升级到 Apache Tomcat 8.5.56 或更高版本。
此外,像 CVE-2023-44487 漏洞也是 Apache HTTP/2 资源管理错误漏洞的一种表现形式,该漏洞存在于 Apache 的 HTTP/2 资源管理中,攻击者通过恶意请求可以使系统陷入拒绝服务状态,受影响产品同样包括 Tomcat 集成的 HTTP/2 支持。
Apache HTTP/2 资源管理错误漏洞给系统带来了严重的安全风险,可能导致服务器资源消耗、性能下降甚至无法正常提供服务。为了避免受到此类漏洞的影响,开发者和运维人员应密切关注官方的漏洞修复信息,及时应用安全补丁,并升级到安全版本。同时,也应定期检查安全公告,确保系统始终处于最新的安全状态。
二、漏洞影响
对系统的危害
Apache HTTP/2 资源管理错误漏洞可能导致系统陷入拒绝服务状态,对系统造成严重危害。攻击者利用漏洞通过大量恶意请求使系统资源耗尽,影响正常业务。例如,Apache Tomcat 安全团队报告的 Tomcat HTTP/2 DoS 漏洞,HTTP/2 请求的特制序列可能会在数秒内引发较高的 CPU 使用率,如果有足够数量的此类请求在并发 HTTP/2 连接上进行连接时,服务器可能无响应,即造成拒绝服务。
此外,像 CVE-2023-44487 等漏洞也是 Apache HTTP/2 资源管理错误漏洞的一种表现形式,受影响产品包括多个.NET 和 Windows 版本,甚至包括 Tomcat 集成的 HTTP/2 支持。攻击者通过恶意请求可以使系统陷入拒绝服务状态。
新发现的 HTTP/2 漏洞如 “HTTP/2 CONTINUATION Flood”,利用配置不当的 HTTP/2 实现,未限制或净化请求数据流中的 CONTINUATION 帧,攻击者可向未设置 END_HEADERS 标志的易受攻击服务器发送 HTTP 请求,持续发送 CONTINUATION 帧流,导致服务器内存不足而崩溃,造成拒绝服务攻击。单台机器甚至单 TCP 连接都有可能破坏服务器的可用性,造成从服务崩溃到性能下降等各种后果。
关于 Apache Tomcat 存在拒绝服务漏洞(CVE-2024-34750),由于 Tomcat 在处理 HTTP/2 流时,没有正确处理某些 HTTP 标头过多的情况,导致对活跃 HTTP/2 流的计数错误,可能使用不正确的无限超时设置,使得本应关闭的连接保持打开状态,可能导致服务器资源消耗、性能下降和安全风险,从而造成拒绝服务。
这些漏洞给系统带来多种风险,包括但不限于:请求走私,攻击者可以通过恶意修改请求头绕过服务器的安全机制,进而对系统进行深度攻击,窃取敏感信息或造成服务中断;注入攻击,不当的输入转义导致代码注入或服务器响应被篡改,危及应用程序的安全性;拒绝服务,攻击者利用漏洞通过大量恶意请求使系统资源耗尽,导致服务无法正常运行,影响业务稳定性。
三、防范措施
使用 Nginx 防范
PHP 中文网提供了 PHP 速学教程,其中提到可以使用 Nginx 防范 HTTP/2 漏洞,但未详细说明具体方法。根据网上的资料,可通过将 Nginx 升级到 1.17.3 + 来解决诸如 CVE-2019-9511、CVE-2019-9513、CVE-2019-9516 等 HTTP/2 资源管理错误漏洞,具体可参考
https://nginx.org/en/security_advisories.html。
升级软件版本
- 对于 Apache Tomcat,可以升级到特定版本来修复漏洞。如 8.0.x 用户升级组件到 8.5.99 版;9.0.x 用户升级组件到 9.0.86 版等。具体的升级步骤可参考以下内容:首先查看当前 tomcat 运行版本,然后进入当前 tomcat 的 bin 目录下,停止 tomcat 服务。接着备份当前运行的 tomcat,可使用命令 tar -czvf tomcatold.tar.gz apache-tomcat-8.5.82。再上传升级包至服务器对应目录,解压安装包,如 tar -zxvf apache-tomcat-8.5.99.tar.gz。之后将原 tomcat 内容 copy 到新 tomcat 目录下,包括 webapps 下源码、conf 下配置文件(比如 server.xml 文件)。最后进入新版本 tomcat 下 bin 目录,启动 tomcat。这样 Apache Tomcat 漏洞已升级到最新版本,并完成相关漏洞的修复。
- 对于 Geoserver,可以通过替换 jetty 的 jar 包和升级 Java 版本来解决相关漏洞问题。具体步骤如下:当由于甲方漏洞扫描爆出 jetty 的漏洞时,若现场的 geoserver 版本中 jetty 版本较低,如 geoserver 版本为 2.24.0,其 jetty 版本是 9.4.52,而低于 9.4.53 版本的 jetty 都会受到影响,且 geoserver 官网最新版本 2.24.1 的 jetty 版本仍为 9.4.52。此时可以自己替换 jetty 的 jar 包,首先去 jetty 官网下载 zip 包,然后对照 geoserver 发行版本中的 jetty jar 包进行选择替换,总共需要 13 个 jar 包,接着将 jetty 中的 start.jar 包也替换到 geoserver 发行包中。但替换完成后可能会报错,如 java.lang.UnsupportedClassVersionError,这是因为替换的 jetty 包是高版本 java 编译的,所以运行环境也只能使用高版本的 java。根据 java 版本和版本对应关系可知,java 版本最低要升级到 java11,可去 JDK 的下载页面查看,现在推荐的版本最低都是 17 了,可以下载 17 版本使用,反正是向下兼容的。如果现场环境限制较多,升级 java 版本后老版本程序无法运行,还可以考虑自己用 jdk8 编译 jetty。首先确认本地 jdk 是 1.8 版本的,如果本地有多个 jdk 版本,需要切换到 1.8 版本。然后去 github 上下载 jetty9.4.53 版本,解压之后从 cmd 进入项目内部,执行 maven 的编译命令:mvn install -DskipTests -T 2C11。执行完之后就可以在各个分项目的 target 目录下获取到需要的 jar 包,将 jar 包替换到 geoserver-bin 的 lib 目录中。同时还需要修改 start.jar 包内版本配置,用压缩软件打开 start.jar 包,总共需要修改四个文件:\org\eclipse\jetty\start 目录下的 build.properties、\META-INF 目录下的 MANIFEST.MF 文件、\META-INF\maven\org.eclipse.jetty\jetty-start 下的 pom.xml、\META-INF\maven\org.eclipse.jetty\jetty-start 下的 pom.properties。修改完成之后,运行服务,看到服务可以正常运行,问题解决。
四、总结
在当今数字化时代,网络安全至关重要。Apache HTTP/2 资源管理错误漏洞给系统带来了严重的安全风险,我们必须高度重视并及时采取有效的防范措施。
一方面,我们要密切关注安全漏洞信息,如定期查看官方的漏洞修复公告、安全论坛等渠道,以便及时了解新出现的漏洞情况。一旦发现与我们使用的系统相关的漏洞,要迅速采取行动。
另一方面,对于已发现的漏洞,应根据具体情况采取合适的防范措施。例如,可以使用 Nginx 来防范 HTTP/2 漏洞,通过将 Nginx 升级到相应版本解决特定的漏洞问题。
墨者安全 防护盾
墨者安全作为专业级别安全防护专家,在应对 Webshell 风险隐患方面展现出了卓越的能力。其拥有全面的检测机制,能够精准识别 Webshell 的各种类型和变体,无论是复杂的大马,还是隐蔽的内存马,都难逃其敏锐的监测。
墨者安全防护盾具备强大的实时监控功能,对服务器的各项活动进行 7*24 小时不间断的监视。一旦发现任何可疑的 Webshell 活动迹象,立即发出警报,并迅速采取隔离和清除措施,将风险扼杀在萌芽状态。
在防护策略上,墨者安全防护盾采用了多层次的防御体系。不仅能够在网络层面阻挡外部的恶意访问和攻击,还能深入系统内部,对服务器的文件系统、进程等进行深度检查和保护,确保 Webshell 无法植入和运行。
同时,墨者安全防护盾拥有快速的应急响应能力。当 Webshell 攻击事件发生时,专业的安全团队能够迅速介入,进行深入的分析和处理,最大程度减少攻击带来的损失,并帮助用户快速恢复服务器的正常运行。
墨者安全防护盾还注重用户教育和培训,为用户提供关于 Webshell 防范的专业知识和最佳实践,帮助用户提升自身的安全意识和防范能力,共同构建坚实的网络安全防线。