Spring 安全公告

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.3(低于 2.3.5)、2.2(低于 2.2.4)、2.1(低于 2.1.4)、2.0(低于 2.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 开发团队。

CVE-2019-3772:XML 外部实体注入 (XXE)

严重 | 2019年1月14日 | CVE-2019-3772

描述

Spring Integration(spring-integration-xml 和 spring-integration-ws 模块)4.3.18、5.0.10、5.1.1 版本以及较旧的不受支持版本在从不受信任的来源接收 XML 数据时容易受到 XML 外部实体注入 (XXE) 的攻击。

受影响的 Spring 产品和版本

  • Spring Integration 5.1.1、5.0.10、4.3.18 及更旧版本

缓解措施

受影响版本的使用者应应用以下缓解措施

  • 将 spring-integration-ws、spring-integration-xml 升级到 4.3.19、5.0.11、5.1.2 或更高版本。
  • 表现出此漏洞的 Spring Integration 组件现在默认情况下会禁用参考备忘单 [1] 中建议的功能,但如果可以启用该功能(因为从受信任的来源接收 XML),则允许用户配置组件。

参考资料

历史记录

2019-01-14:发布初始漏洞报告。

CVE-2019-3773:XML 外部实体注入 (XXE)

严重 | 2019年1月14日 | CVE-2019-3773

描述

Spring Web Services 2.4.3、3.0.4 版本以及所有三个项目中较旧的不受支持版本在从不受信任的来源接收 XML 数据时容易受到 XML 外部实体注入 (XXE) 的攻击。

受影响的 Spring 产品和版本

  • Spring Web Services 2.4.3、3.0.4 及更旧版本

缓解措施

受影响版本的使用者应应用以下缓解措施

  • 将 spring-ws、spring-xml jar 升级到 2.4.4、3.0.6 或更高版本
  • 存在此漏洞的Spring Web Services组件现在已根据参考速查表[1]的建议默认禁用这些功能,但如果可以启用该功能(因为XML来自可信来源),则允许用户配置这些组件。

参考资料

历史记录

2019-01-14:发布初始漏洞报告。

CVE-2019-3774:XML外部实体注入 (XXE)

严重 | 2019年1月14日 | CVE-2019-3774

描述

Spring Batch 3.0.9、4.0.1、4.1.0版及更旧的不再受支持的版本在从不受信任的来源接收XML数据时容易受到XML外部实体注入(XXE)的攻击。

受影响的 Spring 产品和版本

  • Spring Batch 3.0.9、4.0.1和4.1.0版及更旧版本

缓解措施

受影响版本的使用者应应用以下缓解措施

  • 将spring-batch jar升级到3.0.10、4.0.2、4.1.1或更高版本
  • 存在此漏洞的Spring Batch组件现在已根据参考速查表[1]的建议默认禁用这些功能,但如果可以启用该功能(因为XML来自可信来源),则允许用户配置这些组件。

参考资料

历史记录

2019-01-14:发布初始漏洞报告。

CVE-2018-15801:使用spring-security时JWT颁发者验证期间的授权绕过

| 2018年12月18日 | CVE-2018-15801

描述

Spring Security 5.1.x版本(早于5.1.2)在JWT颁发者验证期间包含授权绕过漏洞。为了受到影响,在签名JWT时必须使用诚实颁发者和恶意用户的相同私钥。在这种情况下,恶意用户可以使用可能被授予诚实颁发者的恶意颁发者URL制作签名的JWT。

受影响的 Spring 产品和版本

  • Spring Framework 5.1到5.1.1

缓解措施

受影响版本的使用者应应用以下缓解措施

  • 5.1.x用户应升级到5.1.2

无需其他缓解步骤。

致谢

此问题已由Björn Bilger识别并负责任地报告。

参考资料

  • 示例 <a href='https://docs.springframework.org.cn/spring-security/site/docs/5.1.1.RELEASE/reference/htmlsingle/#oauth2resourceserver-minimalconfiguration'>配置</a>,其中启用了简单的资源服务器。
  • <a href='https://docs.springframework.org.cn/spring-security/site/docs/5.1.1.RELEASE/reference/htmlsingle/#oauth2resourceserver'>Spring…

CVE-2018-15756:通过范围请求进行DoS攻击

| 2018年10月16日 | CVE-2018-15756

描述

Spring Framework 5.1版、5.0.x版(早于5.0.10)、4.3.x版(早于4.3.20)以及4.2.x分支上更旧的不再受支持的版本在通过ResourceHttpRequestHandler提供静态资源服务时(或从5.0版开始,当带注释的控制器返回org.springframework.core.io.Resource时),支持范围请求。恶意用户(或攻击者)可以添加具有大量范围或具有重叠宽范围(或两者兼有)的范围头,以进行拒绝服务攻击。

此漏洞会影响依赖于spring-webmvc或spring-webflux的应用程序。此类应用程序还必须注册提供静态资源(例如JS、CSS、图像等),或者具有返回org.springframework.core.io.Resource的带注释的控制器。

依赖于spring-boot-starter-web或spring-boot-starter-webflux的Spring Boot应用程序可以直接提供静态资源,因此易受攻击。

受影响的 Spring 产品和版本

  • Spring Framework 5.1
  • Spring Framework 5.0.0到5.0.9
  • Spring Framework 4.3到4.3.19
  • 更旧的、不再受支持的4.2版本也受影响

缓解措施

受影响版本的使用者应应用以下缓解措施

  • 5.1用户应升级到5.1.1
  • 5.0.x用户应升级到5.0.10
  • 4.3.x用户应升级到4.3.20
  • 4.2.x用户应升级到受支持的分支。

无需其他缓解步骤。

评估影响时,请注意以下事项

  • 4.2版引入了对范围请求的支持。因此,4.2版之前的版本不受此问题的影响。
  • 5.0版引入了从带注释的控制器返回org.springfamework.core.io.Resource的支持。因此,5.0版之前的版本只能通过注册来提供静态资源而受到影响。

致谢

此问题已由Aruba Threat Labs的Nicholas Starke识别并负责任地报告。

历史记录

2018年10月16日:发布初始漏洞报告。

CVE-2018-15758:spring-security-oauth2中的权限提升

严重 | 2018年10月16日 | CVE-2018-15758

描述

Spring Security OAuth 2.3版(早于2.3.4)、2.2版(早于2.2.3)、2.1版(早于2.1.3)、2.0版(早于2.0.16)以及更旧的不再受支持的版本在特定条件下可能容易受到权限提升的攻击。恶意用户或攻击者可以向批准端点发出请求,从而修改先前保存的授权请求,并在后续批准时导致权限提升。如果应用程序配置为使用声明AuthorizationRequest作为控制器方法参数的自定义批准端点,则可能发生这种情况。

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

  • 充当授权服务器的角色(例如@EnableAuthorizationServer
  • 使用声明AuthorizationRequest作为控制器方法参数的自定义批准端点

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

  • 充当授权服务器并使用默认批准端点的应用程序
  • 仅充当资源服务器的角色(例如@EnableResourceServer
  • 仅充当客户端的角色(例如@EnableOAuthClient

受影响的 Spring 产品和版本

  • Spring Security OAuth 2.3到2.3.3
  • Spring Security OAuth 2.2到2.2.2
  • Spring Security OAuth 2.1到2.1.2
  • Spring Security OAuth 2.0到2.0.15
  • 较旧的不受支持版本也会受到影响

缓解措施

受影响版本的使用者应应用以下缓解措施

  • 2.3.x用户应升级到2.3.4
  • 2.2.x用户应升级到2.2.3
  • 2.1.x用户应升级到2.1.3
  • 2.0.x用户应升级到2.0.16
  • 较旧的版本应升级到受支持的分支

无需其他缓解步骤。

致谢

此问题已由Micro Focus的Alvaro Muñoz (@pwntester)识别并负责任地报告。

参考资料

  • Spring Security OAuth <a href="http://projects.spring.io/spring-security-oauth/docs/oauth2.html">文档</a>;请参阅“授权服务器配置”部分
  • 以下示例配置 <a href="https://github.com/spring-projects/spring-security-oauth/blob/master/tests/annotation/approval/src/main/java/demo/Application.java#L36"><code>@EnableAuthorizationServer</code></a>…

CVE-2018-11087:RabbitMQ (Spring-AMQP)主机名验证

严重 | 2018年9月11日 | CVE-2018-11087

描述

spring-amqp 1.x版本(早于1.7.10)、2.x版本(早于2.0.6)暴露了中间人攻击漏洞。

Spring RabbitMQ Java客户端不执行主机名验证。

这意味着只要其他主机的SSL证书受信任,就会被盲目接受。

要利用此漏洞,攻击者必须在使用Spring RabbitMQ Java客户端的Java应用程序与其连接到的RabbitMQ服务器之间执行中间人(MITM)攻击。

TLS通常可以保护用户和系统免受中间人攻击,但如果客户端接受来自其他受信任主机的证书,则无法做到这一点。

Spring AMQP使用RabbitMQ amqp-client java库与RabbitMQ通信。

它使用RabbitConnectionFactoryBean来创建/配置连接工厂。

受影响的 Spring 产品和版本

  • Spring-AMQP 1.7.10和2.0.6之前的版本
  • RabbitMQ amqp-client 4.8.0和5.4.0之前的版本

缓解措施

受影响版本的使用者应应用以下缓解措施

  • 升级到1.7.10.RELEASE或2.0.6.RELEASE并将enableHostnameValidation属性设置为true。将传递性amqp-client版本分别覆盖到至少4.8.0和5.4.0。
  • 即将推出的2.1.0.RELEASE将默认将该属性设置为true。
  • 如果您直接使用amqp-client库来创建连接工厂,请参阅其Javadocs了解enableHostnameValidation()方法。

致谢

此问题已由瑞士Alphabot Security的Peter Stöckli识别并负责任地报告。

历史记录

2018年9月11日:发布初始漏洞报告。

领先一步

VMware提供培训和认证,以加快您的进度。

了解更多

获取支持

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

了解更多

即将举行的活动

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

查看全部