导语:近期Apache Tomcat爆出 HTTP/2 拒绝服务漏洞,Spring Cloud/Boot框架的多个版本均已中招。本文整理了受影响的框架版本列表,并列出升级方案,帮助你们避免受到该漏洞的影响。web
事件背景spring
6月25日, Apache 官方安全团队经过邮件公开报告了一个高危漏洞,邮件中介绍了 HTTP/2 拒绝服务漏洞的细节及解决方案。以下图所示:apache
漏洞详情连接:api
http://mail-archives.apache.org/mod_mbox/www-announce/202006.mbox/%3Cfd56bc1d-1219-605b-99c7-946bf7bd8ad4@apache.org%3Etomcat
翻译
-
漏洞名称:Apache Tomcat HTTP/2 拒绝服务漏洞 -
漏洞编号:CVE-2020-11996
-
严重程度: 重要
-
软件提供商: Apache 软件基金会
受影响的版本:安全
Apache Tomcat 10.0.0-M1 ~ 10.0.0-M5服务器
Apache Tomcat 9.0.0.M1 ~ 9.0.35微信
漏洞描述:一个特别制做的 HTTP/2 请求序列,在短短数秒内能致使 CPU 满负载率,若是有足够数量多的此类请求链接(HTTP/2)并发打在服务器上,服务器可能会失去响应。websocket
Apache Tomcat 10.0.0-M6+架构
Apache Tomcat 9.0.36+
Apache Tomcat 8.5.56+
Spring Cloud / Boot 框架影响
Apache Tomcat HTTP/2 拒绝服务漏洞也给Spring Cloud / Boot 框架带来了必定的影响。下面是全部受影响的版本列表,你们能够查看并对照下本身的代码,看看是否受到影响。
Spring Cloud Edgware / Spring Boot 1.5.x
Spring Cloud [Edgware.RELEASE
- Edgware.SR6
] 版本受到影响。
Spring Boot [1.5.0.RELEASE
- 1.5.22.RELEASE
] 版本受到影响。
Spring Cloud Finchley / Spring Boot 2.0.x
Spring Cloud [Finchley.RELEASE
- Finchley.SR4
] 版本受到影响。
Spring Boot [2.0.0.RELEASE
- 2.0.9.RELEASE
] 版本受到影响。
Spring Cloud Greenwich / Spring Boot 2.1.x
Spring Cloud [Greenwich.RELEASE
- Greenwich.SR6
] 版本受到影响。
Spring Boot [2.1.0.RELEASE
- 2.1.14.RELEASE
] 版本受到影响。
Spring Boot [2.1.15.RELEASE
] 版本已修复。
Spring Cloud Hoxton / Spring Boot 2.2.x
Spring Cloud [Hoxton.RELEASE
- Hoxton.SR6
] 版本受到影响。
Spring Boot [2.2.0.RELEASE
- 2.2.7.RELEASE
] 版本受到影响。
Spring Boot [2.2.8.RELEASE
] 版本已修复。
Spring Boot 2.3.x
Spring Boot [2.3.0.RELEASE
] 版本受到影响。
Spring Boot [2.3.1.RELEASE
] 版本已修复。
升级方案
为了不上述漏洞,现有两种升级方案:
直接升级Spring Boot版本。
手动升级Tomcat版本。
升级 Spring Cloud Edgware / Spring Boot 1.5.x
Edgware没法经过升级Spring Boot版本解决问题。
<properties>
<tomcat-embed.version>8.5.56</tomcat-embed.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>${tomcat-embed.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-el</artifactId>
<version>${tomcat-embed.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-websocket</artifactId>
<version>${tomcat-embed.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-annotations-api</artifactId>
<version>${tomcat-embed.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
升级Spring Cloud Finchley / Spring Boot 2.0.x
Finchley没法经过升级Spring Boot版本解决问题。
<properties>
<tomcat-embed.version>8.5.56</tomcat-embed.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>${tomcat-embed.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-el</artifactId>
<version>${tomcat-embed.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-websocket</artifactId>
<version>${tomcat-embed.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
升级Spring Cloud Greenwich / Spring Boot 2.1.x
1. 升级Spring Boot
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.15.RELEASE</version>
</parent>
2. 升级Tomcat
<properties>
<tomcat-embed.version>9.0.36</tomcat-embed.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>${tomcat-embed.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-el</artifactId>
<version>${tomcat-embed.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-websocket</artifactId>
<version>${tomcat-embed.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
升级Spring Cloud Hoxton / Spring Boot 2.2.x
1. 升级Spring Boot
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.8.RELEASE</version>
</parent>
2. 升级Tomcat
<properties>
<tomcat-embed.version>9.0.36</tomcat-embed.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>${tomcat-embed.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-el</artifactId>
<version>${tomcat-embed.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-websocket</artifactId>
<version>${tomcat-embed.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
升级Spring Boot 2.3.x
1. 升级Spring Boot
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.1.RELEASE</version>
</parent>
2. 升级Tomcat
<properties>
<tomcat-embed.version>9.0.36</tomcat-embed.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>${tomcat-embed.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-websocket</artifactId>
<version>${tomcat-embed.version}</version>
</dependency>
</dependencies></dependencyManagement>

《腾讯云中间件团队在Service Mesh中的实践与探索》

扫描下方二维码关注本公众号,
了解更多微服务、消息队列的相关信息!


本文分享自微信公众号 - 腾讯云中间件(gh_6ea1bc2dd5fd)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。