此頁面列出了 Spring 安全諮詢。
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 之前的版本中,當應用程式在響應中設定“Content-Disposition”標頭時,如果檔名屬性來自使用者提供的輸入,則應用程式容易受到反射式檔案下載 (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-16869:Reactor Netty 使用了易受攻擊的 Netty 版本
CVE-2019-11284:Reactor Netty 重定向中的身份驗證洩漏
CVE-2019-11272:PlaintextPasswordEncoder 驗證為空的編碼密碼
描述
Spring Security 4.2.x 4.2.12 及更舊的不受支援的版本支援使用 PlaintextPasswordEncoder 的純文字密碼。如果使用受影響版本的 Spring Security 的應用程式正在使用 PlaintextPasswordEncoder 並且使用者的編碼密碼為空,則惡意使用者(或攻擊者)可以使用“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**
緩解措施
受影響版本的使用者應採取以下緩解措施
- **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.x** 和 **Spring IO Platform Cairo** 的使用者,強烈建議將 `spring-security-oauth` 版本覆蓋為包含 CVE 補丁的最新版本。為了覆蓋版本,您需要宣告/設定屬性 `spring-security-oauth.version`。
以下是 **Spring Boot 1.5.x** 使用者的說明。
要使用 Maven 覆蓋屬性,請在 pom 的 `
要使用 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 文件,請參閱*“授權伺服器配置”*部分
@EnableAuthorizationServer的示例配置…
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(來自 PingAn Galaxy Lab)發現並負責報告。[電子郵件保護]
參考資料
CVE-2019-3797:Spring Data JPA 派生查詢導致額外資訊洩露
描述
這會影響 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 例項時存在不安全的隨機性
描述
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:釋出初始漏洞報告。
報告漏洞
要報告 Spring 組合專案中存在的安全漏洞,請參閱安全策略