CVE-2020-5398:Spring MVC 或 Spring WebFlux 應用程式透過源自請求輸入的“Content-Disposition”頭導致的反射檔案下載 (RFD) 攻擊

高危 | 2020 年 1 月 16 日 | CVE-2020-5398

描述

在使用 Spring Framework 的應用程式中,版本 5.2.x 在 5.2.3 之前、版本 5.1.x 在 5.1.13 之前以及版本 5.0.x 在 5.0.16 之前,當在響應中設定了“Content-Disposition”頭,並且其 filename 屬性來源於使用者提供輸入時,應用程式易受到反射檔案下載 (RFD) 攻擊。

具體來說,當以下所有條件都滿足時,應用程式是脆弱的

  • 該頭是透過 org.springframework.http.ContentDisposition 構建的。
  • 檔名透過以下方法之一設定
    • ContentDisposition.Builder#filename(String),或
    • ContentDisposition.Builder#filename(String, US_ASCII)
  • 檔名的值來源於使用者提供的輸入。
  • 使用者提供的輸入未被應用程式淨化。
  • 下載的響應內容被攻擊者注入惡意命令(詳情參見 RFD 論文參考)。

如果以下任何條件滿足,則應用程式不脆弱

  • 應用程式未設定“Content-Disposition”響應頭。
  • 該頭不是透過 org.springframework.http.ContentDisposition 構建的。
  • 檔名透過以下方法之一設定
    • ContentDisposition.Builder#filename(String, UTF_8),或
    • ContentDisposition.Builder#filename(String, ISO_8859_1)
  • 檔名不來源於使用者提供的輸入。
  • 檔名來源於使用者提供的輸入,但已被應用程式淨化。

受影響的 Spring 產品和版本

  • Spring Framework
    • 5.2.0 到 5.2.2
    • 5.1.0 到 5.1.12
    • 5.0.0 到 5.0.15

緩解措施

受影響版本的使用者應採取以下緩解措施。5.2.x 使用者應升級到 5.2.3。 5.1.x 使用者應升級到 5.1.13。 5.0.x 使用者應升級到 5.0.16。 無需採取其他步驟。  已修復此問題的版本包括

  • Spring Framework
    • 5.2.3
    • 5.1.13
    • 5.0.16

鳴謝

此問題由 EPAM 的 Roman Shalymov 發現並負責任地報告。

參考

CVE-2019-11272:PlaintextPasswordEncoder 認證編碼為 null 的密碼

低危 | 2019 年 6 月 19 日 | CVE-2019-11272

描述

Spring Security 版本 4.2.x 直到 4.2.12 以及更早的不受支援版本,使用 PlaintextPasswordEncoder 支援明文密碼。如果使用受影響的 Spring Security 版本的應用程式利用了 PlaintextPasswordEncoder 並且使用者的編碼密碼為 null,則惡意使用者(或攻擊者)可以使用密碼“null”進行身份驗證。

受影響的 Spring 產品和版本

  • Spring Security 4.2 到 4.2.12
  • 更早的不受支援版本也受到影響
  • 請注意,Spring Security 5+ 版本不受此漏洞影響。

緩解措施

受影響版本的使用者應採取以下緩解措施

  • 4.2.x 使用者應升級到 4.2.13
  • 更早版本應升級到受支援的分支

無需採取其他緩解步驟。

鳴謝

此問題由來自 mytaxi 的 Tim Büthe 和 Daniel Neagaru 發現並負責任地報告。

歷史

2019-06-19:初次釋出漏洞報告

CVE-2019-11269:spring-security-oauth2 中的開放重定向漏洞

中危 | 2019 年 5 月 30 日 | CVE-2019-11269

描述

Spring Security OAuth 版本 2.32.3.6 之前、2.22.2.5 之前、2.12.1.5 之前以及 2.02.0.18 之前,以及更早的不受支援版本,可能容易受到開放重定向攻擊,從而洩露授權碼。惡意使用者或攻擊者可以利用授權碼授權型別,精心構造一個指向授權端點的請求,並透過 redirect_uri 引數指定一個被操縱的重定向 URI。這可能導致授權伺服器將資源所有者的使用者代理重定向到攻擊者控制的 URI,同時洩露授權碼。

此漏洞會影響滿足以下所有要求的應用程式

  • 充當授權伺服器角色(例如 @EnableAuthorizationServer
  • AuthorizationEndpoint 中使用了 DefaultRedirectResolver

此漏洞會影響以下應用程式

  • 充當授權伺服器角色但使用 DefaultRedirectResolver 以外的其他 RedirectResolver 實現
  • 僅充當資源伺服器角色(例如 @EnableResourceServer
  • 僅充當客戶端角色(例如 @EnableOAuthClient

受影響的 Spring 產品和版本

  • Spring Security OAuth 2.32.3.5
  • Spring Security OAuth 2.22.2.4
  • Spring Security OAuth 2.12.1.4
  • Spring Security OAuth 2.02.0.17

緩解措施

受影響版本的使用者應採取以下緩解措施

  • 2.3.x 使用者應升級到 2.3.6
  • 2.2.x 使用者應升級到 2.2.5
  • 2.1.x 使用者應升級到 2.1.5
  • 2.0.x 使用者應升級到 2.0.18
  • 更早版本應升級到受支援的分支

無需採取其他緩解步驟。

對於使用 Spring Boot 1.5.xSpring IO Platform Cairo 的使用者,強烈建議將 spring-security-oauth 版本覆蓋到包含此 CVE 補丁的最新版本。要覆蓋版本,您需要宣告/設定屬性 spring-security-oauth.version

以下是針對 Spring Boot 1.5.x 使用者的說明。

要使用 Maven 覆蓋屬性,請在 pom 的 部分宣告屬性


2.0.18.RELEASE

要使用 Gradle 覆蓋屬性,請在 build.gradle 指令碼中配置值

ext['spring-security-oauth.version'] = '2.0.18.RELEASE'

或在 gradle.properties 中

spring-security-oauth.version=2.0.18.RELEASE

注意:相同的說明適用於 Spring IO Platform Cairo 的使用者。但是,需要指定的版本是 2.2.5.RELEASE

鳴謝

此問題由 Mike Noordermeer 發現並負責任地報告。

參考

使用 Spring Data JPA example matcher 額外的資訊暴露

低危 | 2019 年 5 月 13 日 | CVE-2019-3802

描述

此問題影響 Spring Data JPA 版本 2.1.6、2.0.14 和 1.11.20 及更早版本。當提供惡意構造的示例值時,使用 ExampleMatcher.StringMatcher.STARTING、ExampleMatcher.StringMatcher.ENDING 或 ExampleMatcher.StringMatcher.CONTAINING 可能會返回超出預期的結果。

受影響的 Spring 產品和版本

  • Spring Data JPA 2.1 到 2.1.7
  • Spring Data JPA 2.0 到 2.0.14
  • Spring Data JPA 1.11 到 1.11.21
  • 更早的不受支援版本也受到影響

緩解措施

受影響版本的使用者應採取以下緩解措施

  • 2.1.x 使用者應升級到 2.1.8(包含在 Spring Boot 2.1.5 中)
  • 2.0.x 使用者應升級到 2.1.8(包含在 Spring Boot 2.1.5 中)
  • 1.11.x 使用者應升級到 1.11.22(包含在 Spring Boot 1.5.20 中)
  • 更早版本應升級到受支援的分支
  • 無需採取其他緩解步驟。請注意,對於當前版本,Spring Data 和 Spring Boot 的 2.0 分支均已 EOL(生命週期結束),我們強烈建議升級。

鳴謝

此問題由 Thaveethu Vignesh 發現並負責任地報告。

參考

CVE-2019-3799:spring-cloud-config-server 中的目錄遍歷漏洞

高危 | 2019 年 4 月 16 日 | CVE-2019-3799

描述

Spring Cloud Config 版本 2.1.x 在 2.1.2 之前、版本 2.0.x 在 2.0.4 之前以及版本 1.4.x 在 1.4.6 之前,以及更早的不受支援版本,允許應用程式透過 spring-cloud-config-server 模組提供任意配置檔案。惡意使用者或攻擊者可以傳送一個使用特製 URL 的請求,從而導致目錄遍歷攻擊。

受影響的 Spring 產品和版本

  • Spring Cloud Config 2.1.0 到 2.1.1
  • Spring Cloud Config 2.0.0 到 2.0.3
  • Spring Cloud Config 1.4.0 到 1.4.5
  • 更早的不受支援版本也受到影響

緩解措施

受影響版本的使用者應採取以下緩解措施

  • 2.1.x 使用者應升級到 2.1.2
  • 2.0.x 使用者應升級到 2.0.4
  • 1.4.x 使用者應升級到 1.4.6
  • 更早版本應升級到受支援的分支
  • 請注意,spring-cloud-config-server 僅應在內部網路中向需要它的客戶端提供,並且應使用 Spring Security 進行保護,這會將此漏洞的暴露範圍限制在具有內部網路訪問許可權和具備適當身份驗證的使用者。

鳴謝

此問題由來自 PingAn Galaxy Lab 的 Vern ([email protected]) 發現並負責任地報告。

參考

CVE-2019-3797:使用 Spring Data JPA 派生查詢導致的額外資訊暴露

低危 | 2019 年 4 月 8 日 | CVE-2019-3797

描述

此問題影響 Spring Data JPA 版本 2.1.5、2.0.13 和 1.11.19 及更早版本。使用 'startingWith'、'endingWith' 或 'containing' 等謂詞的派生查詢,在提供惡意構造的查詢引數值時,可能會返回超出預期的結果。此外,手動定義查詢中的 LIKE 表示式,如果繫結的引數值沒有正確轉義保留字元,也可能返回意外結果。

受影響的 Spring 產品和版本

  • Spring Data JPA 2.0 到 2.0.13
  • Spring Data JPA 2.1 到 2.1.5
  • Spring Data JPA 1.11 到 1.11.19
  • 更早的不受支援版本也受到影響

緩解措施

受影響版本的使用者應採取以下緩解措施

  • 2.1.x 使用者應升級到 2.1.6(包含在 Spring Boot 2.1.4 中)
  • 2.0.x 使用者應升級到 2.0.14(包含在 Spring Boot 2.0.9 中)
  • 1.11.x 使用者應升級到 1.11.20(包含在 Spring Boot 1.5.20 中)
  • 更早版本應升級到受支援的分支
  • 無需採取其他緩解步驟。請注意,對於當前版本,Spring Data 和 Spring Boot 的 2.0 分支均已 EOL(生命週期結束),我們強烈建議升級。

鳴謝

此問題由 Maruthi Adithya G 發現並負責任地報告。

CVE-2019-3795:使用 Spring Security 構建的 SecureRandom 例項時存在不安全隨機性問題

低危 | 2019 年 4 月 4 日 | CVE-2019-3795

描述

Spring Security 版本 4.2.x 在 4.2.12 之前、版本 5.0.x 在 5.0.12 之前以及版本 5.1.x 在 5.1.5 之前,在使用 SecureRandomFactoryBean#setSeed 配置 SecureRandom 例項時包含不安全隨機性漏洞。要受到影響,合法的應用程式必須提供種子,並使生成的隨機材料可供攻擊者檢查。

受影響的 Spring 產品和版本

  • Spring Security 4.2 到 4.2.11
  • Spring Security 5.0 到 5.0.11
  • Spring Security 5.1 到 5.1.4

緩解措施

受影響版本的使用者應採取以下緩解措施

  • 4.2.x 使用者應升級到 4.2.12
  • 5.0.x 使用者應升級到 5.0.12
  • 5.1.x 使用者應升級到 5.1.5

鳴謝

此問題由 Thijs Alkemade 發現並負責任地報告。

歷史

2019-04-02:初次釋出漏洞報告。

CVE-2019-3778:spring-security-oauth2 中的開放重定向漏洞

嚴重 | 2019 年 2 月 21 日 | CVE-2019-3778

描述

Spring Security OAuth 版本 2.32.3.5 之前、2.22.2.4 之前、2.12.1.4 之前以及 2.02.0.17 之前,以及更早的不受支援版本,可能容易受到開放重定向攻擊,從而洩露授權碼。惡意使用者或攻擊者可以利用授權碼授權型別,精心構造一個指向授權端點的請求,並透過“redirect_uri”引數指定一個被操縱的重定向 URI。這可能導致授權伺服器將資源所有者的使用者代理重定向到攻擊者控制的 URI,同時洩露授權碼。

此漏洞會影響滿足以下所有要求的應用程式

  • 充當授權伺服器角色(例如 @EnableAuthorizationServer
  • AuthorizationEndpoint 中使用了 DefaultRedirectResolver

此漏洞會影響以下應用程式

  • 充當授權伺服器角色但使用 DefaultRedirectResolver 以外的其他 RedirectResolver 實現
  • 僅充當資源伺服器角色(例如 @EnableResourceServer
  • 僅充當客戶端角色(例如 @EnableOAuthClient

受影響的 Spring 產品和版本

  • Spring Security OAuth 2.32.3.4
  • Spring Security OAuth 2.22.2.3
  • Spring Security OAuth 2.12.1.3
  • Spring Security OAuth 2.02.0.16
  • 更早的不受支援版本也受到影響

緩解措施

受影響版本的使用者應採取以下緩解措施

  • 2.3.x 使用者應升級到 2.3.5
  • 2.2.x 使用者應升級到 2.2.4
  • 2.1.x 使用者應升級到 2.1.4
  • 2.0.x 使用者應升級到 2.0.17
  • 更早版本應升級到受支援的分支

無需採取其他緩解步驟。

對於使用 Spring Boot 1.5.xSpring IO Platform Cairo 的使用者,強烈建議將 spring-security-oauth 版本覆蓋到包含此 CVE 補丁的最新版本。要覆蓋版本,您需要宣告/設定屬性 spring-security-oauth.version

以下是針對 Spring Boot 1.5.x 使用者的說明。

要使用 Maven 覆蓋屬性,請在 pom 的 部分宣告屬性


2.0.17.RELEASE

要使用 Gradle 覆蓋屬性,請在您的 build.gradle 指令碼中配置值

ext['spring-security-oauth.version'] = '2.0.17.RELEASE'

或在 gradle.properties

spring-security-oauth.version=2.0.17.RELEASE

注意:相同的說明適用於 Spring IO Platform Cairo 的使用者。但是,需要指定的版本是 2.2.4.RELEASE

鳴謝

此問題由來自 dotloop 的 Dirk Koehler (github.com/phrinx) 發現並負責任地報告。特別感謝 NTT、NTT Comware、NTT DATA 的 Macchinetta Framework 開發團隊…

先行一步

VMware 提供培訓和認證,助您加速前進。

瞭解更多

獲取支援

Tanzu Spring 透過一項簡單的訂閱,為 OpenJDK™、Spring 和 Apache Tomcat® 提供支援和二進位制檔案。

瞭解更多

即將舉行的活動

檢視 Spring 社群所有即將舉行的活動。

檢視全部