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

参考

CVE-2019-11272:PlaintextPasswordEncoder 认证编码为 null 的密码

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

描述

Spring Security 版本 4.2.x 直到 4.2.12 以及更早的不受支持版本,使用 PlaintextPasswordEncoder 支持明文密码。如果使用受影响的 Spring Security 版本的应用程序利用了 PlaintextPasswordEncoder 并且用户的编码密码为 null,则恶意用户(或攻击者)可以使用密码“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.32.3.6 之前、2.22.2.5 之前、2.12.1.5 之前以及 2.02.0.18 之前,以及更早的不受支持版本,可能容易受到开放重定向攻击,从而泄露授权码。恶意用户或攻击者可以利用授权码授权类型,精心构造一个指向授权端点的请求,并通过 redirect_uri 参数指定一个被操纵的重定向 URI。这可能导致授权服务器将资源所有者的用户代理重定向到攻击者控制的 URI,同时泄露授权码。

此漏洞会影响满足以下所有要求的应用程序

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

此漏洞会影响以下应用程序

  • 充当授权服务器角色但使用 DefaultRedirectResolver 以外的其他 RedirectResolver 实现
  • 仅充当资源服务器角色(例如 @EnableResourceServer
  • 仅充当客户端角色(例如 @EnableOAuthClient

受影响的 Spring 产品和版本

  • Spring Security OAuth 2.32.3.5
  • Spring Security OAuth 2.22.2.4
  • Spring Security OAuth 2.12.1.4
  • Spring Security OAuth 2.02.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.xSpring 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 example matcher 额外的信息暴露

低危 | 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 进行保护,这会将此漏洞的暴露范围限制在具有内部网络访问权限和具备适当身份验证的用户。

鸣谢

此问题由来自 PingAn Galaxy Lab 的 Vern ([email protected]) 发现并负责任地报告。

参考

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:初次发布漏洞报告。

CVE-2019-3778:spring-security-oauth2 中的开放重定向漏洞

严重 | 2019 年 2 月 21 日 | CVE-2019-3778

描述

Spring Security OAuth 版本 2.32.3.5 之前、2.22.2.4 之前、2.12.1.4 之前以及 2.02.0.17 之前,以及更早的不受支持版本,可能容易受到开放重定向攻击,从而泄露授权码。恶意用户或攻击者可以利用授权码授权类型,精心构造一个指向授权端点的请求,并通过“redirect_uri”参数指定一个被操纵的重定向 URI。这可能导致授权服务器将资源所有者的用户代理重定向到攻击者控制的 URI,同时泄露授权码。

此漏洞会影响满足以下所有要求的应用程序

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

此漏洞会影响以下应用程序

  • 充当授权服务器角色但使用 DefaultRedirectResolver 以外的其他 RedirectResolver 实现
  • 仅充当资源服务器角色(例如 @EnableResourceServer
  • 仅充当客户端角色(例如 @EnableOAuthClient

受影响的 Spring 产品和版本

  • Spring Security OAuth 2.32.3.4
  • Spring Security OAuth 2.22.2.3
  • Spring Security OAuth 2.12.1.3
  • Spring Security OAuth 2.02.0.16
  • 更早的不受支持版本也受到影响

缓解措施

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

  • 2.3.x 用户应升级到 2.3.5
  • 2.2.x 用户应升级到 2.2.4
  • 2.1.x 用户应升级到 2.1.4
  • 2.0.x 用户应升级到 2.0.17
  • 更早版本应升级到受支持的分支

无需采取其他缓解步骤。

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

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

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


2.0.17.RELEASE

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

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

或在 gradle.properties

spring-security-oauth.version=2.0.17.RELEASE

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

鸣谢

此问题由来自 dotloop 的 Dirk Koehler (github.com/phrinx) 发现并负责任地报告。特别感谢 NTT、NTT Comware、NTT DATA 的 Macchinetta Framework 开发团队…

先行一步

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

了解更多

获取支持

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

了解更多

即将举行的活动

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

查看全部