導語:近期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源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。