CVE-2018-1270: spring-messaging 远程代码执行

危急 | 2018年4月5日 | CVE-2018-1270

描述

Spring Framework 5.0.x(5.0.5之前)、4.3.x(4.3.16之前)以及更旧的不受支持的版本允许应用程序通过 spring-messaging 模块暴露带有简单内存 STOMP 代理的 WebSocket STOMP 端点。恶意用户(或攻击者)可以向代理构造一条消息,从而导致远程代码执行攻击。

受影响的 Spring 产品和版本

  • Spring Framework 5.0 至 5.0.4
  • Spring Framework 4.3 至 4.3.15
  • 更旧的不受支持的版本也受到影响

缓解措施

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

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

无需其他缓解步骤。

请注意,使用 Spring Security 提供的消息认证和授权功能,可将此漏洞的暴露限制在授权用户范围内。

致谢

此问题由 Alvaro Muñoz (@pwntester)(Micro Focus Fortify)发现并负责任地报告。

参考资料

CVE-2018-1271: Windows 上 Spring MVC 的目录遍历漏洞

| 2018年4月5日 | CVE-2018-1271

描述

Spring Framework 5.0 至 5.0.4、4.3 至 4.3.14 以及更旧的不受支持的版本允许应用程序配置 Spring MVC 以提供静态资源(例如 CSS、JS、图片)。当静态资源从 Windows 上的文件系统提供时(而不是类路径或 ServletContext),恶意用户可以使用特制 URL 发送请求,从而导致目录遍历攻击。

受影响的 Spring 产品和版本

  • Spring Framework 5.0 至 5.0.4
  • Spring Framework 4.3 至 4.3.14
  • 更旧的不受支持的版本也受到影响

缓解措施

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

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

无需其他缓解步骤。

另请注意,此攻击不适用于以下应用程序:

  • 不使用 Windows。
  • 不从文件系统提供文件,即资源位置不使用“file:”。
  • 使用已修补 CVE-2018-1199 的 Spring Security 版本。

致谢

此问题由 DEVCORE 的 Orange Tsai (@orange_8361) 发现并负责任地报告。

参考资料

CVE-2018-1272: Spring Framework 的多部分内容污染漏洞

| 2018年4月5日 | CVE-2018-1272

描述

Spring Framework 5.0 至 5.0.4、4.3 至 4.3.14 以及更旧的不受支持的版本提供了对多部分请求的客户端支持。当 Spring MVC 或 Spring WebFlux 服务器应用程序(服务器 A)从远程客户端接收输入,然后使用该输入向另一个服务器(服务器 B)发出多部分请求时,可能会受到攻击,即在服务器 A 的请求内容中插入额外的多部分,导致服务器 B 对其期望的部分使用错误的值。这可能导致权限提升,例如,如果部分内容代表用户名或用户角色。

为了使攻击成功,攻击者必须能够猜测服务器 A 为向服务器 B 发出的多部分请求选择的多部分边界值,这要求攻击者还必须能够控制服务器或通过单独的攻击向量查看服务器 A 的 HTTP 日志。

受影响的 Spring 产品和版本

  • Spring Framework 5.0 至 5.0.4
  • Spring Framework 4.3 至 4.3.14
  • 更旧的不受支持的版本也受到影响

缓解措施

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

  • 5.0.x 用户应升级到 5.0.5
  • 4.3.x 用户应升级到 4.3.15

无需其他缓解步骤。

致谢

此问题由 GoSecure 的 Philippe Arteau 发现并负责任地报告。

历史

2018-04-05: 初步漏洞报告发布

CVE-2018-1229: Spring Batch Admin 文件上传中的存储型 XSS

| 2018年3月16日 | CVE-2018-1229

描述

Spring Batch Admin 文件上传功能中的跨站脚本 (XSS) 漏洞允许远程攻击者通过与文件上传功能相关的特制请求注入任意 Web 脚本或 HTML。

受影响的 Spring 产品和版本

  • 所有 Spring Batch Admin 版本

缓解措施

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

  • Spring Batch Admin 已于2018年1月1日停止维护。Spring Cloud Data Flow 是未来管理和监控 Spring Batch 任务的推荐替代方案。

致谢

此漏洞由 Wen Bin Kong 负责任地报告。

参考资料

CVE-2018-1230: Spring Batch Admin 易受跨站请求伪造攻击

中等 | 2018年3月16日 | CVE-2018-1230

描述

Spring Batch Admin 不包含跨站请求伪造 (CSRF) 保护,这可能允许攻击者制作恶意网站以执行对 Spring Batch Admin 的请求。

受影响的 Spring 产品和版本

  • 所有 Spring Batch Admin 版本

缓解措施

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

  • Spring Batch Admin 已于2018年1月1日停止维护。Spring Cloud Data Flow 是未来管理和监控 Spring Batch 任务的推荐替代方案。

致谢

此漏洞由 Wen Bin Kong 负责任地报告。

参考资料

CVE-2018-1196: 通过 Spring Boot 启动脚本的符号链接提权攻击

| 2018年1月30日 | CVE-2018-1196

描述

Spring Boot 支持一个嵌入式启动脚本,可用于轻松将应用程序作为 systemd 或 init.d Linux 服务运行[1]。Spring Boot 1.5.9 及更早版本中包含的脚本容易受到符号链接攻击,该攻击允许“run_user”覆盖并获取同一系统上任何文件的所有权。

为了发动攻击,应用程序必须作为服务安装,并且“run_user”需要对服务器具有 shell 访问权限。

未作为服务安装或未使用嵌入式启动脚本的 Spring Boot 应用程序不受此影响。

[1] https://docs.springjava.cn/spring-boot/docs/1.5.x/reference/htmlsingle/#deployment-service

受影响的 Spring 产品和版本

  • Spring Boot
    • 1.5.0 - 1.5.9
    • 2.0.0.M1 - 2.0.0.M7
  • 未分析旧的未维护的 Spring Boot 版本,可能受影响。

缓解措施

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

  • 1.5.x 用户应更新到 1.5.10
  • 2.0.x 预发布版用户应更新到 2.0.0.RC1

致谢

此问题由 Oracle Cloud Operations(英国)的 Adam Stephens 发现并负责任地报告给 Pivotal。

历史

2018-01-30: 初步漏洞报告发布

CVE-2018-1199: 静态资源的安全绕过

| 2018年1月29日 | CVE-2018-1199

描述

Spring Security 在处理安全约束时未考虑 URL 路径参数。通过添加带有特殊编码的 URL 路径参数,攻击者可能能够绕过安全约束。此问题的根本原因是 Servlet 规范中路径参数处理缺乏明确性(见下文)。一些 Servlet 容器在 getPathInfo() 返回的值中包含路径参数,而另一些则不包含。Spring Security 使用 getPathInfo() 返回的值作为将请求映射到安全约束的过程的一部分。在此特定攻击中,路径参数中使用的不同字符编码允许绕过受保护的 Spring MVC 静态资源 URL。

受影响的 Spring 产品和版本

  • Spring Security
    • 4.1.0 - 4.1.4
    • 4.2.0 - 4.2.3
    • 5.0.0
  • Spring Framework
    • 5.0.0 - 5.0.2
    • 4.3.0 - 4.3.13
  • 未分析旧的未维护的 Spring Security 和 Spring Framework 版本,可能受影响。

缓解措施

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

  • Spring Security
    • 5.0.x 用户应更新到 5.0.1
    • 4.2.x 用户应更新到 4.2.4
    • 4.1.x 用户应更新到 4.1.5
  • Spring Framework
    • 5.0.x 用户应更新到 5.0.3
    • 4.3.x 用户应更新到 4.3.14

作为一般预防措施,鼓励用户将公共资源和私有资源分开。例如,分离静态资源并将其映射到 /resources/public/** 和 /resources/private/** 优于在一个公共根目录下混合公共和私有资源内容。

致谢

此问题由 NTT Comware、NTT DATA Corporation 和 NTT 的 Macchinetta Framework 开发团队发现,并负责任地报告给 Pivotal。

历史

2018-01-29: 初步…

CVE-2017-8028: Spring-LDAP 使用 userSearch 和 STARTTLS 进行身份验证时允许使用任意密码

| 2017年10月16日 | CVE-2017-8028

描述

当连接到某些 LDAP 服务器时,如果未绑定其他属性,并且使用 LDAP BindAuthenticator 和 org.springframework.ldap.core.support.DefaultTlsDirContextAuthenticationStrategy 作为身份验证策略,并设置 userSearch,则当用户名正确时,允许使用任意密码进行身份验证。发生这种情况是因为某些 LDAP 供应商要求明确的操作才能使 LDAP 绑定生效。

受影响的 Spring 产品和版本

  • Spring-LDAP 版本 1.3.0 - 2.3.1

缓解措施

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

  • 升级到 Spring-LDAP 版本 2.3.2.RELEASE+

致谢

此漏洞由 Tobias Schneider 负责任地报告。

参考资料

CVE-2017-8046: Spring Data REST 中 PATCH 请求的远程代码执行

危急 | 2017年9月21日 | CVE-2017-8046

描述

提交给使用 Spring Data REST 支持的 HTTP 资源的服务器的恶意 PATCH 请求可以使用特制 JSON 数据来运行任意 Java 代码。

受影响的 Spring 产品和版本

  • Spring Data REST 2.6.9 (Ingalls SR9) 之前、3.0.1 (Kay SR1) 之前的版本
  • Spring Boot(如果使用了 Spring Data REST 模块)1.5.9 之前、2.0 M6 之前的版本

缓解措施

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

  • 已修复此问题的版本包括:
    • Spring Data REST 2.6.9 (Ingalls SR9, 2017年10月27日)
    • Spring Data REST 3.0.1 (Kay SR1, 2017年10月27日)
    • Spring Boot 1.5.9 (2017年10月28日)
    • Spring Boot 2.0 M6 (2017年11月6日)

致谢

此漏洞由 Semmle 和 lgtm.com 的 Man Yue Mo 负责任地报告。

参考资料

CVE-2017-8045: spring-amqp 远程代码执行

| 2017年9月19日 | CVE-2017-8045

描述

在受影响的 Spring AMQP 版本中,org.springframework.amqp.core.Message 在转换为字符串时可能被不安全地反序列化。可以制作恶意有效负载来利用此漏洞并启用远程代码执行攻击。

受影响的 Spring 产品和版本

  • Spring AMQP 1.7.4、1.6.11 和 1.5.7 之前的版本

缓解措施

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

  • 已修复此问题的版本包括:
    • Spring AMQP: 2.0.0, 1.7.4, 1.6.11, 1.5.7

致谢

此漏洞由 Semmle 和 lgtm.com 的 Man Yue Mo 负责任地报告。

参考资料

领先一步

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

了解更多

获得支持

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

了解更多

即将举行的活动

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

查看所有