Spring Security 安全公告

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 之前)的應用程式容易受到反映檔案下載 (RFD) 攻擊,當它在回應中設定「Content-Disposition」標頭,其中 filename 屬性是從使用者提供的輸入衍生而來時。

具體而言,當以下所有條件都為真時,應用程式容易受到攻擊

  • 標頭是使用 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

緩解措施

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

  • <strong>2.3.x</strong> 的使用者應升級到 <strong>2.3.6</strong>
  • <strong>2.2.x</strong> 的使用者應升級到 <strong>2.2.5</strong>
  • <strong>2.1.x</strong> 的使用者應升級到 <strong>2.1.5</strong>
  • <strong>2.0.x</strong> 的使用者應升級到 <strong>2.0.18</strong>
  • 較舊版本應升級到受支援的分支

無需其他緩解步驟。

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

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

要使用 Maven 覆寫屬性,請在 pom 的 <properties></properties> 區段中宣告該屬性


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 範例比對器的額外資訊洩漏

| 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 進行保護,這將此漏洞的暴露限制為具有內部網路存取權的使用者和具有正確驗證的使用者。

鳴謝

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

參考資料

搶先一步

VMware 提供訓練和認證,可加速您的進度。

了解更多

取得支援

Tanzu Spring 在一個簡單的訂閱中提供對 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位檔案。

了解更多

即將到來的活動

查看 Spring 社群中所有即將到來的活動。

查看全部