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 发现并负责任地报告。
参考
历史