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。无需其他步骤。已修复此问题的版本包括

  • Spring Framework
    • 5.2.3
    • 5.1.13
    • 5.0.16

鸣谢

此问题由 EPAM 的 Roman Shalymov 发现并负责任地报告。

参考

历史

  • 2020-01-16:发布初始漏洞报告。

领先一步

VMware 提供培训和认证,以加速您的进步。

了解更多

获得支持

Tanzu Spring 通过一个简单的订阅提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将到来的活动

查看 Spring 社区中所有即将到来的活动。

查看全部