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

  • Spring Framework
    • 5.2.3
    • 5.1.13
    • 5.0.16

致谢

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

参考资料

CVE-2019-11272:PlaintextPasswordEncoder 验证为空的编码密码

| 2019 年 6 月 19 日 | CVE-2019-11272

描述

Spring Security 4.2.x 4.2.12 及更旧的不受支持的版本支持使用 PlaintextPasswordEncoder 的纯文本密码。如果使用受影响版本的 Spring Security 的应用程序正在使用 PlaintextPasswordEncoder 并且用户的编码密码为空,则恶意用户(或攻击者)可以使用“null”密码进行身份验证。

受影响的 Spring 产品和版本

  • Spring Security 4.2 至 4.2.12
  • 更旧的不受支持的版本也受到影响
  • 请注意,Spring Security 5+ 不受此漏洞影响。

缓解措施

受影响版本的用户应采取以下缓解措施

  • 4.2.x 用户应升级到 4.2.13
  • 旧版本应升级到受支持的分支

无需其他缓解步骤。

致谢

此问题由 mytaxi 的 Tim Büthe 和 Daniel Neagaru 发现并负责报告。

历史

2019-06-19:发布了初始漏洞报告

CVE-2019-11269:spring-security-oauth2 中的开放重定向器

中等 | 2019 年 5 月 30 日 | CVE-2019-11269

描述

Spring Security OAuth **2.3** 2.3.6 之前的版本、**2.2** 2.2.5 之前的版本、**2.1** 2.1.5 之前的版本和 **2.0** 2.0.18 之前的版本,以及更旧的不受支持的版本,可能容易受到开放重定向攻击,导致授权码泄漏。恶意用户或攻击者可以利用授权码授予类型,向授权端点发起请求,并通过 `redirect_uri` 参数指定一个被操纵的重定向 URI。这可能导致授权服务器将资源所有者用户代理重定向到攻击者控制下的 URI,并泄漏授权码。

此漏洞暴露了满足以下所有要求的应用程序

  • 充当授权服务器的角色(例如 ` @EnableAuthorizationServer `)
  • 在 `AuthorizationEndpoint` 中使用 `DefaultRedirectResolver`

此漏洞**不会**暴露以下应用程序

  • 充当授权服务器的角色,并使用除 `DefaultRedirectResolver` 之外的不同 `RedirectResolver` 实现
  • 仅充当资源服务器的角色(例如 ` @EnableResourceServer `)
  • 仅充当客户端的角色(例如 ` @EnableOAuthClient `)

受影响的 Spring 产品和版本

  • Spring Security OAuth **2.3** 至 **2.3.5**
  • Spring Security OAuth **2.2** 至 **2.2.4**
  • Spring Security OAuth **2.1** 至 **2.1.4**
  • Spring Security OAUth **2.0** 至 **2.0.17**

缓解措施

受影响版本的用户应采取以下缓解措施

  • **2.3.x** 用户应升级到 **2.3.6**
  • **2.2.x** 用户应升级到 **2.2.5**
  • **2.1.x** 用户应升级到 **2.1.5**
  • **2.0.x** 用户应升级到 **2.0.18**
  • 旧版本应升级到受支持的分支

无需其他缓解步骤。

对于 **Spring Boot 1.5.x** 和 **Spring IO Platform Cairo** 的用户,强烈建议将 `spring-security-oauth` 版本覆盖为包含 CVE 补丁的最新版本。为了覆盖版本,您需要声明/设置属性 `spring-security-oauth.version`。

以下是 **Spring Boot 1.5.x** 用户的说明。

要使用 Maven 覆盖属性,请在 pom 的 `` 部分声明该属性


2.0.18.RELEASE

要使用 Gradle 覆盖属性,请在 build.gradle 脚本中配置该值

ext['spring-security-oauth.version'] = '2.0.18.RELEASE'

或在 gradle.properties 中

spring-security-oauth.version=2.0.18.RELEASE

注意:对于 **Spring IO Platform Cairo** 的用户,适用相同的说明。但是,要指定的版本是 **2.2.5.RELEASE**。

致谢

此问题由 Mike Noordermeer 发现并负责报告。

参考资料

Spring Data JPA 示例匹配器导致额外信息泄露

| 2019 年 5 月 13 日 | CVE-2019-3802

描述

这会影响 Spring Data JPA 2.1.6、2.0.14 和 1.11.20 及之前版本。当提供恶意构造的示例值时,使用 ExampleMatcher.StringMatcher.STARTING、ExampleMatcher.StringMatcher.ENDING 或 ExampleMatcher.StringMatcher.CONTAINING 可能会返回超出预期的结果。

受影响的 Spring 产品和版本

  • Spring Data JPA 2.1 至 2.1.7
  • Spring Data JPA 2.0 至 2.0.14
  • Spring Data JPA 1.11 至 1.11.21
  • 更旧的不受支持的版本也受到影响

缓解措施

受影响版本的用户应采取以下缓解措施

  • 2.1.x 用户应升级到 2.1.8(包含在 Spring Boot 2.1.5 中)
  • 2.0.x 用户应升级到 2.1.8(包含在 Spring Boot 2.1.5 中)
  • 1.11.x 用户应升级到 1.11.22(包含在 Spring Boot 1.5.20 中)
  • 旧版本应升级到受支持的分支
  • 无需其他缓解步骤。请注意,对于当前版本,Spring Data 和 Spring Boot 的 2.0 分支已终止支持 (EOL),我们强烈建议升级

致谢

此问题由 Thaveethu Vignesh 发现并负责报告

参考资料

CVE-2019-3799:spring-cloud-config-server 的目录遍历漏洞

| 2019 年 4 月 16 日 | CVE-2019-3799

描述

Spring Cloud Config 2.1.x 2.1.2 之前的版本、2.0.x 2.0.4 之前的版本和 1.4.x 1.4.6 之前的版本,以及更旧的不受支持的版本,允许应用程序通过 spring-cloud-config-server 模块提供任意配置文件。恶意用户或攻击者可以使用特制 URL 发送请求,从而导致目录遍历攻击。

受影响的 Spring 产品和版本

  • Spring Cloud Config 2.1.0 至 2.1.1
  • Spring Cloud Config 2.0.0 至 2.0.3
  • Spring Cloud Config 1.4.0 至 1.4.5
  • 更旧的不受支持的版本也受到影响

缓解措施

受影响版本的用户应采取以下缓解措施

  • 2.1.x 用户应升级到 2.1.2
  • 2.0.x 用户应升级到 2.0.4
  • 1.4.x 用户应升级到 1.4.6
  • 旧版本应升级到受支持的分支
  • 请注意,spring-cloud-config-server 应仅在内部网络上提供给需要它的客户端,并且应使用 Spring Security 进行保护,这会将此漏洞的暴露范围限制在具有内部网络访问权限的用户和具有适当身份验证的用户。

致谢

此问题由 Vern(来自 PingAn Galaxy Lab)发现并负责报告。[电子邮件保护]

参考资料

CVE-2019-3797:Spring Data JPA 派生查询导致额外信息泄露

| 2019 年 4 月 8 日 | CVE-2019-3797

描述

这会影响 Spring Data JPA 2.1.5、2.0.13 和 1.11.19 及之前版本。当提供恶意构造的查询参数值时,使用任何谓词“startingWith”、“endingWith”或“containing”的派生查询可能会返回超出预期的结果。此外,如果绑定的参数值没有正确转义保留字符,手动定义的查询中的 LIKE 表达式可能会返回意外结果。

受影响的 Spring 产品和版本

  • Spring Data JPA 2.0 至 2.0.13
  • Spring Data JPA 2.1 至 2.1.5
  • Spring Data JPA 1.11 至 1.11.19
  • 更旧的不受支持的版本也受到影响

缓解措施

受影响版本的用户应采取以下缓解措施

  • 2.1.x 用户应升级到 2.1.6(包含在Spring Boot 2.1.4中)
  • 2.0.x 用户应升级到 2.0.14(包含在Spring Boot 2.0.9中)
  • 1.11.x 用户应升级到 1.11.20(包含在Spring Boot 1.5.20中)
  • 旧版本应升级到受支持的分支
  • 无需其他缓解步骤。请注意,对于当前版本,Spring Data 和 Spring Boot 的 2.0 分支已终止支持 (EOL),我们强烈建议升级

致谢

此问题由 Maruthi Adithya G 发现并负责报告

CVE-2019-3795:使用 Spring Security 构造的 SecureRandom 实例时存在不安全的随机性

| 2019 年 4 月 4 日 | CVE-2019-3795

描述

Spring Security 4.2.x 4.2.12 之前的版本、5.0.x 5.0.12 之前的版本和 5.1.x 5.1.5 之前的版本在使用 SecureRandomFactoryBean#setSeed 配置 SecureRandom 实例时存在不安全的随机性漏洞。要受到影响,诚实的应用程序必须提供种子,并使生成的随机材料可供攻击者检查。

受影响的 Spring 产品和版本

  • Spring Security 4.2 至 4.2.11
  • Spring Security 5.0 至 5.0.11
  • Spring Security 5.1 至 5.1.4

缓解措施

受影响版本的用户应采取以下缓解措施

  • 4.2.x 用户应升级到 4.2.12
  • 5.0.x 用户应升级到 5.0.12
  • 5.1.x 用户应升级到 5.1.5

致谢

此问题由 Thijs Alkemade 发现并负责报告。

历史

2019-04-02:发布初始漏洞报告。

领先一步

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

了解更多

获得支持

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件,只需一份简单的订阅。

了解更多

即将举行的活动

查看 Spring 社区所有即将举行的活动。

查看所有