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