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”头,并且文件名属性来源于用户提供输入时,应用程序容易受到反射文件下载 (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 发现并负责任地报告。
参考资料
历史