Spring Security 安全公告
此頁面列出 Spring 公告。
CVE-2020-5405:使用 spring-cloud-config-server 進行目錄遍歷
CVE-2020-5397:透過 CORS Preflight 請求對 Spring MVC 或 Spring WebFlux 發動 CSRF 攻擊
CVE-2020-5398:透過 Spring MVC 或 Spring WebFlux 應用程式,從請求輸入來源的「Content-Disposition」標頭發動 RFD 攻擊
描述
在 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-16869:Reactor Netty 使用容易受攻擊的 Netty 版本
CVE-2019-11284:Reactor Netty 在重定向中洩漏驗證資訊
CVE-2019-11272:PlaintextPasswordEncoder 驗證編碼密碼為 null
描述
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 中的開放式重新導向器
描述
Spring Security OAuth 版本 2.3(2.3.6 之前)、2.2(2.2.5 之前)、2.1(2.1.5 之前)和 2.0(2.0.18 之前),以及較舊的不支援版本可能會受到開放式重新導向器攻擊,該攻擊可能會洩漏授權碼。惡意使用者或攻擊者可以使用授權碼授予類型來製作授權端點的請求,並透過 redirect_uri
參數指定被操縱的重新導向 URI。這可能會導致授權伺服器將資源擁有者使用者代理重新導向到攻擊者控制下的 URI,並洩漏授權碼。
此漏洞會暴露符合以下所有要求的應用程式
- 充當授權伺服器的角色(例如
@EnableAuthorizationServer
) - 在
AuthorizationEndpoint
中使用DefaultRedirectResolver
此漏洞不會暴露以下應用程式
- 充當授權伺服器的角色,並使用
DefaultRedirectResolver
以外的其他RedirectResolver
實作 - 僅充當資源伺服器的角色(例如
@EnableResourceServer
) - 僅充當用戶端的角色(例如
@EnableOAuthClient
)
受影響的 Spring 產品和版本
- Spring Security OAuth 2.3 至 2.3.5
- Spring Security OAuth 2.2 至 2.2.4
- Spring Security OAuth 2.1 至 2.1.4
- Spring Security OAuth 2.0 到 2.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.x 和 Spring IO Platform Cairo 的使用者,強烈建議覆寫 spring-security-oauth
版本到包含 CVE 修正檔的最新版本。 為了覆寫版本,您需要宣告/設定屬性 spring-security-oauth.version
。
以下是針對 Spring Boot 1.5.x 使用者的說明。
要使用 Maven 覆寫屬性,請在 pom 的 <properties></properties>
區段中宣告該屬性
要使用 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 Security OAuth <a href="https://projects.spring.io/spring-security-oauth/docs/oauth2.html">documentation</a>,請參閱 <em>“Authorization Server Configuration”</em> 章節
- 關於 <a href="https://github.com/spring-projects/spring-security-oauth/blob/master/tests/annotation/approval/src/main/java/demo/Application.java#L36"><code>@EnableAuthorizationServer</code></a 的範例設定…
使用 Spring Data JPA 範例比對器的額外資訊洩漏
描述
這會影響到 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 的目錄遍歷
描述
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)發現並負責地回報。
參考資料
- <a href='https://cloud.spring.io/spring-cloud-config/multi/multi__spring_cloud_config_server.html#_security'>Securing Spring Cloud Config Server</a> 文件。 ...
回報漏洞
若要回報 Spring 系列專案中的安全性漏洞,請參閱安全性政策