漏洞描述
在Spring Framework,5.2.x之前的版本5.2.x,5.1.13之前的版本5.1.x和5.0.16之前的版本5.0.x中,應(yīng)用程序在受到攻擊時容易受到反射文件下載(RFD)攻擊,通過響應(yīng)中設(shè)置“ Content-Disposition” 響應(yīng)header頭來造成攻擊,其中filename屬性來自用戶提供的輸入。
當(dāng)滿足以下所有條件時,應(yīng)用程序?qū)⒑苋菀资艿焦簦?/p>
- 響應(yīng)header是通過springframework.http.ContentDisposition進(jìn)行添加的
- 文件名是通過以下方式之一設(shè)置的:
- Builder#filename(String)。
- Builder#filename(String, US_ASCII)。
- filename的值來自用戶提供的輸入。
- 應(yīng)用程序未清除用戶提供的輸入。
- 攻擊者已將下載的響應(yīng)內(nèi)容中注入惡意命令。
禹宏信安建議使用Spring MVC或Spring WebFlux用戶及時安裝最新補(bǔ)丁,以免遭受黑客攻擊
漏洞編號
CVE-2020-5398
漏洞危害
應(yīng)用程序在受到攻擊時容易受到反射文件下載(RFD)攻擊。
漏洞等級
高危
受影響版本
Spring Framework:
5.2.0 to 5.2.2
5.1.0 to 5.1.12
5.0.0 to 5.0.15
修復(fù)方案
- 建議2.x用戶應(yīng)升級到5.2.3。5.1.x用戶應(yīng)升級到5.1.13。5.0.x用戶應(yīng)升級到5.0.16
- 或者采用正確配置:
- 應(yīng)用程序未設(shè)置“ Content-Disposition”響應(yīng)header。
- 響應(yīng)header不是通過springframework.http.ContentDisposition進(jìn)行添加的,文件名是通過以下方式之一設(shè)置的:
ContentDisposition.Builder#filename(String, UTF_8)
ContentDisposition.Builder#filename(String, ISO_8859_1)
filename的值不是來自用戶提供的輸入
filename來自用戶提供的輸入,但由應(yīng)用程序清除。