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 系统上从文件系统提供(而不是从 classpath 或 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 的 Multipart 内容污染漏洞

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

描述

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

攻击者若要成功,必须能够猜测服务器 A 为发往服务器 B 的 multipart 请求选择的 multipart boundary 值,这需要攻击者同时控制服务器,或通过单独的攻击途径查看服务器 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 易受跨站请求伪造 (CSRF) 攻击

中危 | 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.springframework.org.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<ul><li>5.0.x 用户应更新到 5.0.1</li><li>4.2.x 用户应更新到 4.2.4</li><li>4.1.x 用户应更新到 4.1.5</li></ul>
  • Spring Framework<ul><li>5.0.x 用户应更新到 5.0.3</li><li>4.3.x 用户应更新到 4.3.14</li></ul>

作为一般预防措施,建议用户将公共资源和私有资源分开。例如,将静态资源分开并将它们映射到 /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

缓解措施

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

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

致谢

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

参考资料

CVE-2017-8045: spring-amqp 中的远程代码执行漏洞

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

描述

在受影响的 Spring AMQP 版本中,当将 org.springframework.amqp.core.Message 转换为字符串时,可能存在不安全的反序列化。可以构造恶意 payload 来利用此漏洞,并实现远程代码执行攻击。

受影响的 Spring 产品和版本

  • Spring AMQP 版本低于 1.7.4、1.6.11 和 1.5.7

缓解措施

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

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

致谢

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

参考资料

CVE-2017-8039: Spring Web Flow 中的数据绑定表达式漏洞

中危 | 2017 年 9 月 15 日 | CVE-2017-8039

描述

此 CVE 涉及一种利用与 CVE-2017-4971 中描述的相同漏洞的第二种途径。

未更改 MvcViewFactoryCreator useSpringBinding 属性(默认禁用,即设置为 “false”)值的应用程序,在处理表单提交但没有子元素来声明显式数据绑定属性映射的视图状态中,可能容易受到恶意 EL 表达式的影响。

受影响的 Spring 产品和版本

  • Spring Web Flow 2.4.0 到 2.4.5
  • 更早不受支持的版本也受到影响

缓解措施

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

  • 2.4.x 用户应升级到 2.4.6

请注意,通常建议在视图状态中始终使用显式数据绑定声明,以防止表单提交将不应设置的字段设置到目标对象上,这是一种良好的实践。

使用 JSF 的 Spring Web Flow 用户不受此报告影响。

致谢

此问题由安全研究员 he1renyagao 发现。

参考资料

抢占先机

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

了解更多

获取支持

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

了解更多

即将举行的活动

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

查看全部