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

此漏洞影響以下應用程式

  • 充當授權伺服器角色但使用 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 Corporation 的 Macchinetta 框架開發團隊,感謝他們協助驗證解決方案並識別出利用此漏洞的其他方式。

參考

歷史

2019-02-21: 初步漏洞報告發布。

領先一步

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

瞭解更多

獲取支援

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

瞭解更多

近期活動

檢視 Spring 社群的所有近期活動。

檢視全部