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)中,當應用程式在響應中設定 “Content-Disposition” 標頭,且 filename 屬性源自使用者提供的輸入時,該應用程式容易受到反射檔案下載 (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。無需其他步驟。已修復此問題的版本包括
鳴謝
此問題由 EPAM 的 Roman Shalymov 發現並負責任地報告。
參考
歷史