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

危急 | 2019年2月21日 | CVE-2019-3778

描述

Spring Security OAuth 版本 2.3 早於 2.3.52.2 早於 2.2.42.1 早於 2.1.42.0 早於 2.0.17,以及更老的,不受支援的版本,可能容易受到開放重定向攻擊,從而洩露授權碼。惡意使用者或攻擊者可以透過授權碼授權型別,向授權端點精心構造請求,並透過“redirect_uri”引數指定經過篡改的重定向 URI。這可能導致授權伺服器將資源所有者使用者代理重定向到攻擊者控制下的 URI,並洩露授權碼。

此漏洞暴露了滿足以下所有要求的應用程式

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

此漏洞**不會**暴露以下應用程式

  • 充當授權伺服器角色並使用非 DefaultRedirectResolverRedirectResolver 實現
  • 僅充當資源伺服器的角色(例如 ` @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 框架開發團隊……

CVE-2019-3772:XML 外部實體注入 (XXE)

危急 | 2019年1月14日 | CVE-2019-3772

描述

Spring Integration (spring-integration-xml 和 spring-integration-ws 模組) 版本 4.3.18、5.0.10、5.1.1 以及更早的不受支援版本,在接收來自不可信源的 XML 資料時,容易受到 XML 外部實體注入 (XXE) 的影響。

受影響的 Spring 產品和版本

  • Spring Integration 版本 5.1.1、5.0.10、4.3.18 及更早版本

緩解措施

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

  • 將 spring-integration-ws、spring-integration-xml 升級到 4.3.19、5.0.11、5.1.2 或更高版本。
  • 存在此漏洞的 Spring Integration 元件現在預設停用參考備忘單 [1] 中建議的功能,但如果 XML 來自受信任的源,並且可以啟用該功能,則允許使用者配置元件。

參考資料

歷史

2019-01-14:釋出初始漏洞報告。

CVE-2019-3773:XML 外部實體注入 (XXE)

危急 | 2019年1月14日 | CVE-2019-3773

描述

Spring Web Services 版本 2.4.3、3.0.4 以及所有三個專案更早的不受支援版本,在接收來自不可信源的 XML 資料時,容易受到 XML 外部實體注入 (XXE) 的影響。

受影響的 Spring 產品和版本

  • Spring Web Services 版本 2.4.3、3.0.4 及更早版本

緩解措施

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

  • 將 spring-ws、spring-xml jar 升級到 2.4.4、3.0.6 或更高版本
  • 存在此漏洞的 Spring Web Services 元件現在預設停用參考備忘單 [1] 中建議的功能,但如果 XML 來自受信任的源,並且可以啟用該功能,則允許使用者配置元件。

參考資料

歷史

2019-01-14:釋出初始漏洞報告。

CVE-2019-3774:XML 外部實體注入 (XXE)

危急 | 2019年1月14日 | CVE-2019-3774

描述

Spring Batch 版本 3.0.9、4.0.1、4.1.0 以及更早的不受支援版本,在接收來自不可信源的 XML 資料時,容易受到 XML 外部實體注入 (XXE) 的影響。

受影響的 Spring 產品和版本

  • Spring Batch 版本 3.0.9、4.0.1、4.1.0 及更早版本

緩解措施

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

  • 將 spring-batch jar 升級到 3.0.10、4.0.2、4.1.1 或更高版本
  • 存在此漏洞的 Spring Batch 元件現在預設停用參考備忘單 [1] 中建議的功能,但如果 XML 來自受信任的源,並且可以啟用該功能,則允許使用者配置元件。

參考資料

歷史

2019-01-14:釋出初始漏洞報告。

CVE-2018-15801:使用 spring-security 進行 JWT 頒發者驗證期間的授權繞過

| 2018年12月18日 | CVE-2018-15801

描述

Spring Security 5.1.x 版本(早於 5.1.2)在 JWT 頒發者驗證期間包含一個授權繞過漏洞。要受到影響,必須在簽署 JWT 時使用誠實頒發者和惡意使用者相同的私鑰。在這種情況下,惡意使用者可以偽造帶有惡意頒發者 URL 的已簽名 JWT,該 JWT 可能會被授予給誠實頒發者。

受影響的 Spring 產品和版本

  • Spring Framework 5.1 到 5.1.1

緩解措施

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

  • 5.1.x 使用者應升級到 5.1.2

無需其他緩解步驟。

致謝

此問題由 Björn Bilger 識別並負責任地報告。

參考資料

CVE-2018-15758:spring-security-oauth2 中的許可權提升

危急 | 2018年10月16日 | CVE-2018-15758

描述

Spring Security OAuth 版本 2.3 早於 2.3.4,2.2 早於 2.2.3,2.1 早於 2.1.3,2.0 早於 2.0.16,以及更早的不受支援版本,在某些條件下可能容易受到許可權提升的影響。惡意使用者或攻擊者可以精心構造請求到批准端點,從而修改先前儲存的授權請求,並導致在隨後的批准中許可權提升。如果應用程式配置為使用宣告 AuthorizationRequest 作為控制器方法引數的自定義批准端點,則可能發生此情況。

此漏洞暴露了滿足以下所有要求的應用程式

  • 充當授權伺服器的角色(例如 ` @EnableAuthorizationServer `)
  • 使用宣告 AuthorizationRequest 作為控制器方法引數的自定義批准端點

此漏洞不會暴露以下應用程式:

  • 充當授權伺服器角色並使用預設批准端點
  • 僅充當資源伺服器的角色(例如 ` @EnableResourceServer `)
  • 僅充當客戶端的角色(例如 ` @EnableOAuthClient `)

受影響的 Spring 產品和版本

  • Spring Security OAuth 2.3 到 2.3.3
  • Spring Security OAuth 2.2 到 2.2.2
  • Spring Security OAuth 2.1 到 2.1.2
  • Spring Security OAuth 2.0 到 2.0.15
  • 更舊的不受支援的版本也受到影響

緩解措施

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

  • 2.3.x 使用者應升級到 2.3.4
  • 2.2.x 使用者應升級到 2.2.3
  • 2.1.x 使用者應升級到 2.1.3
  • 2.0.x 使用者應升級到 2.0.16
  • 舊版本應升級到受支援的分支

無需其他緩解措施。

致謝

此問題由 Micro Focus 的 Alvaro Muñoz (@pwntester) 識別並負責任地報告。

參考資料

CVE-2018-15756:透過範圍請求進行 DoS 攻擊

| 2018年10月16日 | CVE-2018-15756

描述

Spring Framework 5.1 版、5.0.x 版(早於 5.0.10)、4.3.x 版(早於 4.3.20)以及 4.2.x 分支上更早的不受支援版本,透過 ResourceHttpRequestHandler 提供對靜態資源的服務時支援範圍請求,或者從 5.0 版開始,當帶註解的控制器返回 org.springframework.core.io.Resource 時。惡意使用者(或攻擊者)可以新增一個具有大量範圍、或具有重疊的寬範圍、或兩者兼有的範圍標頭,以進行拒絕服務攻擊。

此漏洞影響依賴 spring-webmvc 或 spring-webflux 的應用程式。此類應用程式還必須註冊以提供靜態資源(例如 JS、CSS、影像等),或者具有返回 org.springframework.core.io.Resource 的帶註解控制器。

依賴 spring-boot-starter-web 或 spring-boot-starter-webflux 的 Spring Boot 應用程式開箱即用即可提供靜態資源,因此容易受到攻擊。

受影響的 Spring 產品和版本

  • Spring Framework 5.1
  • Spring Framework 5.0.0 到 5.0.9
  • Spring Framework 4.3 到 4.3.19
  • 更早的不受支援版本(可追溯到 4.2)也受影響

緩解措施

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

  • 5.1 使用者應升級到 5.1.1
  • 5.0.x 使用者應升級到 5.0.10
  • 4.3.x 使用者應升級到 4.3.20
  • 4.2.x 使用者應升級到受支援的分支。

無需進一步的緩解措施。

評估影響時請注意以下事項

  • 範圍請求支援是在 4.2 版本中引入的。因此,早於 4.2 的版本不受此問題影響。
  • 從帶註解的控制器返回 org.springfamework.core.io.Resource 的支援是在 5.0 版本中引入的。因此,早於 5.0 的版本只能透過註冊以提供靜態資源而受到影響。

致謝

此問題由 Aruba Threat Labs 的 Nicholas Starke 識別並負責任地報告。

歷史

2018-10-16:釋出初始漏洞報告。

CVE-2018-11087:RabbitMQ (Spring-AMQP) 主機名驗證

危急 | 2018年9月11日 | CVE-2018-11087

描述

spring-amqp 1.x 版本早於 1.7.10,2.x 版本早於 2.0.6 存在中間人漏洞。

Spring RabbitMQ Java 客戶端不執行主機名驗證。

這意味著其他主機的 SSL 證書只要受信任,就會被盲目接受。

要利用此漏洞,攻擊者必須在使用 Spring RabbitMQ Java 客戶端的 Java 應用程式和其連線的 RabbitMQ 伺服器之間執行中間人 (MITM) 攻擊。

TLS 通常可以保護使用者和系統免受 MITM 攻擊,但如果客戶端接受來自其他受信任主機的證書,則無法實現。

Spring AMQP 使用 RabbitMQ amqp-client java 庫與 RabbitMQ 通訊。

它使用 RabbitConnectionFactoryBean 建立/配置連線工廠。

受影響的 Spring 產品和版本

  • Spring-AMQP 版本早於 1.7.10 和 2.0.6
  • RabbitMQ amqp-client 版本早於 4.8.0 和 5.4.0

緩解措施

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

  • 升級到 1.7.10.RELEASE 或 2.0.6.RELEASE 並將 enableHostnameValidation 屬性設定為 true。將傳遞性 amqp-client 版本分別覆蓋為至少 4.8.0 和 5.4.0。
  • 即將釋出的 2.1.0.RELEASE 將預設將該屬性設定為 true。
  • 如果您直接使用 amqp-client 庫建立連線工廠,請參閱其 javadoc 中 enableHostnameValidation() 方法的說明。

致謝

此問題由瑞士 Alphabot Security 的 Peter Stöckli 識別並負責任地報告。

歷史

2018-09-11:釋出初始漏洞報告。

CVE-2018-11039:Spring Framework 中的跨站跟蹤 (XST)

中等 | 2018年6月14日 | CVE-2018-11039

描述

Spring Framework(5.0.x 版本早於 5.0.7,4.3.x 版本早於 4.3.18,以及更早的不受支援版本)允許 Web 應用程式使用 Spring MVC 中的 HiddenHttpMethodFilter 將 HTTP 請求方法更改為任何 HTTP 方法(包括 TRACE)。如果應用程式存在預先存在的 XSS 漏洞,惡意使用者(或攻擊者)可以使用此過濾器升級為 XST(跨站跟蹤)攻擊。

受影響的 Spring 產品和版本

  • Spring Framework 5.0 到 5.0.6
  • Spring Framework 4.3 到 4.3.17
  • 更舊的不受支援的版本也受到影響

緩解措施

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

  • 5.0.x 使用者應升級到 5.0.7
  • 4.3.x 使用者應升級到 4.3.18
  • 舊版本應升級到受支援的分支

無需其他緩解步驟。

此攻擊適用於以下應用程式:

  • 使用 HiddenHttpMethodFilter(在 Spring Boot 中預設啟用)
  • 允許應用程式伺服器處理 HTTP TRACE 請求

此攻擊不能直接利用,因為攻擊者必須透過 HTTP POST 發出跨域請求,這被同源策略禁止。這就是為什麼 Web 應用程式本身存在預先存在的 XSS(跨站指令碼)漏洞是升級到 XST 所必需的。

致謝

此問題由 Ocado Technology 的 Mariusz Łuciów 識別並報告。

歷史

2018-06-14:釋出初始漏洞報告。

CVE-2018-11040:MappingJackson2JsonView 中預設啟用 JSONP

中等 | 2018年6月14日 | CVE-2018-11040

描述

Spring Framework 版本 5.0.x 早於 5.0.7、4.3.x 早於 4.3.18,以及更早的不受支援版本,允許 Web 應用程式透過 AbstractJsonpResponseBodyAdvice 為 REST 控制器和 MappingJackson2JsonView 為瀏覽器請求啟用 JSONP(JSON with Padding)進行跨域請求。兩者在 Spring Framework 和 Spring Boot 中預設均未啟用。然而,當 MappingJackson2JsonView 在應用程式中配置時,JSONP 支援透過“jsonp”和“callback”JSONP 引數自動可用,從而實現跨域請求。

允許來自不受信任來源的跨域請求可能會將使用者資訊暴露給第三方瀏覽器指令碼。

此漏洞適用於以下應用程式:

  • 顯式配置 MappingJackson2JsonView。
  • 並且未將 MappingJackson2JsonView 的 jsonpParameterNames 屬性設定為空集。
  • 並且透過可以渲染 JSONP 內容的端點暴露敏感使用者資訊。

受影響的 Spring 產品和版本

  • Spring Framework 5.0 到 5.0.6
  • Spring Framework 4.1 到 4.3.17

緩解措施

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

  • 5.0.x 使用者應升級到 5.0.7。
  • 4.3.x 使用者應升級到 4.3.18。
  • 更舊版本應升級到受支援的分支,否則將 MappingJacksonJsonView 的 jsonpParameterNames 屬性設定為空集。

確實需要 JSONP 支援的應用程式在升級後需要顯式配置 MappingJacksonJsonView 的 jsonpParameterNames 屬性。建議應用程式改用 CORS 而不是 JSONP 來啟用跨域請求。Spring Framework 中對 JSONP 的支援在 5.0.7 和 4.3.18 中已棄用,並將在 5.1 中刪除。

致謝

此問題由 Meyyalagan Chandrasekaran 識別並報告。

參考資料

  • SPR-16798 “棄用 JSONP 支援並更新 MappingJackson2JsonView”
  • 示例

領先一步

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

瞭解更多

獲得支援

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位制檔案,只需一份簡單的訂閱。

瞭解更多

即將舉行的活動

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

檢視所有