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-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-2018-15801: 使用 spring-security 进行 JWT 颁发者验证期间的授权绕过

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

描述

Spring Security 5.1.x 5.1.2 版本之前包含一个 JWT 颁发者验证期间的授权绕过漏洞。要受到影响,必须使用诚实颁发者和恶意用户的相同私钥来签署 JWT。在这种情况下,恶意用户可以伪造带有恶意颁发者 URL 的签名 JWT,该 JWT 可能对诚实颁发者有效。

受影响的 Spring 产品和版本

  • Spring Framework 5.1 至 5.1.1

缓解措施

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

  • 5.1.x 用户应升级到 5.1.2

无需其他缓解措施。

致谢

此问题由 Björn Bilger 发现并负责任地报告。

参考资料

CVE-2018-15756: 通过 Range 请求进行的 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 时,支持范围请求。恶意用户(或攻击者)可以在 Range 头部添加大量范围、重叠的宽范围或两者兼有,以进行拒绝服务攻击。

此漏洞影响依赖于 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 用户应升级到受支持的分支。

无需进一步的缓解措施。

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

  • Range 请求支持是在 4.2 版本中引入的。因此,4.2 版本之前的版本不受此问题影响。
  • 从带注解控制器返回 org.springfamework.core.io.Resource 的支持是在 5.0 版本中引入的。因此,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) 发现并负责任地报告。

参考资料

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 通常可以保护用户和系统免受 MITM 攻击,但如果客户端接受来自其他受信任主机的证书,则无法实现保护。

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 库创建连接工厂,请参考其 javadoc 中关于 enableHostnameValidation() 方法的说明。

致谢

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

历史记录

2018-09-11: 初次漏洞报告发布。

CVE-2018-11039: 使用 Spring Framework 进行跨站追踪 (XST)

中危 | 2018年6月14日 | CVE-2018-11039

描述

Spring Framework(5.0.x 5.0.7 版本之前、4.3.x 4.3.18 版本之前以及不受支持的旧版本)允许 Web 应用程序使用 Spring MVC 中的 HiddenHttpMethodFilter 将 HTTP 请求方法更改为任何 HTTP 方法(包括 TRACE)。如果应用程序存在预先存在的 XSS 漏洞,则恶意用户(或攻击者)可以使用此过滤器升级到 XST(跨站追踪)攻击。

受影响的 Spring 产品和版本

  • Spring Framework 5.0 至 5.0.6
  • Spring Framework 4.3 至 4.3.17
  • 不受支持的旧版本也受到影响

缓解措施

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

  • 5.0.x 用户应升级到 5.0.7
  • 4.3.x 用户应升级到 4.3.18
  • 旧版本应升级到受支持的分支

无需其他缓解措施。

此攻击适用于满足以下条件的应用程序

  • 使用 HiddenHttpMethodFilter(在 Spring Boot 中默认启用)
  • 允许应用程序服务器处理 HTTP TRACE 请求

此攻击不能直接利用,因为攻击者必须通过 HTTP POST 发起跨域请求,而这被同源策略禁止。因此,为了能够升级到 XST 攻击,Web 应用程序本身必须存在预先存在的 XSS(跨站脚本)漏洞。

致谢

此问题由 Ocado Technology 的 Mariusz Łuciów 发现并报告。

历史记录

2018-06-14: 初次漏洞报告发布。

CVE-2018-11040: MappingJackson2JsonView 中默认启用 JSONP

中危 | 2018年6月14日 | CVE-2018-11040

描述

Spring Framework 的 5.0.x 5.0.7 版本之前、4.3.x 4.3.18 版本之前以及不受支持的旧版本,允许 Web 应用程序通过 REST 控制器的 AbstractJsonpResponseBodyAdvice 和浏览器请求的 MappingJackson2JsonView 启用 JSONP(填充式 JSON)跨域请求。Spring Framework 和 Spring Boot 默认都没有启用这两项功能。但是,当应用程序中配置了 MappingJackson2JsonView 时,通过“jsonp”和“callback”这两个 JSONP 参数,JSONP 支持会自动就绪,从而启用跨域请求。

允许来自不受信任来源的跨域请求可能会将用户信息暴露给第三方浏览器脚本。

此漏洞适用于满足以下条件的应用程序

  • 明确配置 MappingJackson2JsonView。
  • 并且未将 MappingJackson2JsonView 的 jsonpParameterNames 属性设置为空集。
  • 并且通过可以利用 JSONP 渲染内容的端点暴露敏感用户信息。

受影响的 Spring 产品和版本

  • Spring Framework 5.0 至 5.0.6
  • Spring Framework 4.1 至 4.3.17

缓解措施

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

  • 5.0.x 用户应升级到 5.0.7。
  • 4.3.x 用户应升级到 4.3.18。
  • 旧版本应升级到受支持的分支,或将 MappingJacksonJsonView 的 jsonpParameterNames 属性设置为空集。

确实需要 JSONP 支持的应用程序在升级后需要明确配置 MappingJacksonJsonView 的 jsonpParameterNames 属性。建议应用程序改用 CORS 而非 JSONP 来启用跨域请求。Spring Framework 对 JSONP 的支持在 5.0.7 和 4.3.18 版本中已弃用,并将在 5.1 版本中移除。

致谢

此问题由 Meyyalagan Chandrasekaran 发现并报告。

参考资料

CVE-2018-1263: spring-integration-zip 的不安全解压缩

危急 | 2018年5月11日 | CVE-2018-1263

描述

spring-integration-zip 的 1.0.2 版本之前存在任意文件写入漏洞,可以通过精心构造的 zip 压缩包(也影响其他压缩格式,如 bzip2、tar、xz、war、cpio、7z)实现,该压缩包包含路径遍历的文件名。因此,当文件名与目标解压缩目录拼接时,最终路径会超出目标文件夹。先前的 CVE-2018-1261 阻止了框架本身写入文件。虽然框架本身现在不会写入此类文件,但它会将错误路径提供给用户应用程序,用户应用程序可能会无意中利用该路径写入文件。

这特别适用于解压缩转换器。

这只有在使用此库的应用程序接受并解压缩来自不受信任来源的 zip 文件时才会发生。

受影响的 Spring 产品和版本

  • Spring Integration Zip 社区扩展项目 1.0.1.RELEASE 及更早版本。

缓解措施

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

  • 升级到 1.0.2.RELEASE

或者不要解压缩不受信任的 zip 文件。

致谢

此问题由 Snyk 安全研究团队和 Abago Forgans 发现并负责任地报告。

历史记录

2018-05-11: 初次漏洞报告发布

领先一步

VMware 提供培训和认证,为您的发展注入动力。

了解更多

获取支持

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

了解更多

即将举行的活动

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

查看全部