CVE-2015-3192 使用 XML 输入的 DoS 攻击

| 2015 年 6 月 30 日 | CVE-2015-3192

描述

XML 外部实体在发布 http://pivotal.io/security/cve-2013-6429 时已被禁用。如果 DTD 未完全禁用,则内联 DTD 声明可用于执行被称为 XML 炸弹的拒绝服务攻击。此类声明根据 XML schema 规则格式正确且有效,但解析时可能导致内存不足错误。为防御此类攻击,必须禁用 DTD 支持,方法是在 DOM 和 SAX API 中将 disallow-doctype-dec 特性设置为 true,并在 StAX API 中将 supportDTD 属性设置为 false

现在,Spring Framework 在框架设置从外部源解析 XML 的所有地方默认执行此操作。这主要包括 spring-oxm 中的 Unmarshaller 实现和 spring-web 中的 HttpMessageConverter 实现。

请注意,应用可能需要采取进一步措施,尤其是在使用 StAX 的情况下。例如,IBM JDK 1.6 和 1.7 除了设置 supportDTD=false 之外,还需要一个环境变量(参见 IBM JDK 参考)。此外,我们发现单独的 supportDTD 并不能防御 JDK JAXP 实现中的所有类型的 DoS 攻击。因此,我们建议使用 Woodstox 开源库进行 StAX 解析。

以下描述了何时在 Spring Framework 中使用 StAX

  • SourceHttpMessageConverter -- 默认启用。该转换器在 3.2 中添加,而 StAX 支持在 4.0.1 中添加,用于转换为类型为 javax.xml.transform.stax.StAXSource 的 Spring MVC 控制器方法参数。
  • Jaxb2CollectionHttpMessageConverter -- 默认不启用。此转换器在 3.2 中添加。
  • MappingJackson2XmlHttpMessageConverter -- 当 classpath 中存在“jackson-dataformat-xml”时启用。此转换器在 4.1 中添加。

受影响的 Spring 产品和版本

  • Spring Framework 3.2.0 到 3.2.13
  • Spring Framework 4.0.0 到 4.1.6
  • 其他不受支持的版本也受到影响

缓解措施

受影响的 Spring Framework 版本的用户应按如下方式升级

  • 对于 3.2.x 版本,升级到 3.2.14+
  • 对于 4.0.x 和 4.1.x 版本,升级到 4.1.7+

此外,通过 StAX 消费外部来源的 XML 输入的应用程序也应使用和/或升级到 Woodstox 库的最新版本,例如 4.2+ 版本(4.2.1 是 Spring IO Platform 中当前托管的版本)。

关于添加 Woodstox 的说明

StAX 定义了一种标准机制,用于在存在多个 StAX 实现时选择使用哪个实现,包括 WEB-INF/services 下的系统属性和服务定义。Woodstox 包含必要的服务定义,因此只需将其添加到 classpath 中即可使用。然而,某些应用服务器(例如 WebLogic)已经捆绑了 Woodstox 的(旧版本),在这种情况下,您可能需要配置服务器以优先使用应用程序选择的版本,请参阅此prefer-application-packages 参考

鸣谢

此问题由 NTT DATA Corporation 的 Toshiaki Maki 负责任地发现并报告给 Pivotal,他还协助开发和测试了解决方案。

参考资料

CVE-2015-0201 Java SockJS 客户端会话 ID 随机性不足

| 2015 年 3 月 6 日 | CVE-2015-0201

描述

Java SockJS 客户端中的会话 ID 生成不够安全,可能允许用户向其他用户的会话发送消息。

请注意,这仅影响使用 Java SockJS 客户端的用户,该客户端生成自己的会话 ID。即使浏览器客户端连接到同一服务器,也不会受到影响。

此外,由于 SockJS 是传输层,当在其之上使用更高级别的消息协议(例如使用 spring-messaging 模块的 STOMP over WebSocket)时,应用层安全性可能已经应用于 STOMP 消息,这可以抵消任何潜在攻击的影响。

受影响的 Spring 产品和版本

  • Spring Framework 4.1.0 到 4.1.4

缓解措施

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

  • 4.1.x 的用户应升级到 4.1.5 或更高版本

鸣谢

Philippe Arteau 发现此问题并负责任地报告给 Pivotal。

参考资料

CVE-2014-3625 Spring Framework 中的目录遍历

中等 | 2014 年 11 月 11 日 | CVE-2014-3625

描述

一些 URL 在使用前未正确清理,允许攻击者获取文件系统上 Spring Web 应用运行进程可访问的任何文件。

受影响的 Spring 产品和版本

  • Spring Framework 3.0.4 到 3.2.11
  • Spring Framework 4.0.0 到 4.0.7
  • Spring Framework 4.1.0 到 4.1.1
  • 其他不受支持的版本也可能受到影响

缓解措施

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

  • 3.2.x 的用户应升级到 3.2.12 或更高版本
  • 4.0.x 的用户应升级到 4.0.8 或更高版本
  • 4.1.x 的用户应升级到 4.1.2 或更高版本

鸣谢

此问题由 NTT DATA Corporation 的 Toshiaki Maki 发现并负责任地报告给 Pivotal。

参考资料

CVE-2014-3578 Spring Framework 中的目录遍历

中等 | 2014 年 9 月 5 日 | CVE-2014-3578

描述

一些 URL 在使用前未正确清理,允许攻击者获取文件系统上 Spring Web 应用运行进程可访问的任何文件。

受影响的 Spring 产品和版本

  • 4.0.0 到 4.0.4
  • 3.2.0 到 3.2.8
  • 已知 3.1.1 受到影响
  • 其他不受支持的版本也可能受到影响

缓解措施

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

  • 3.x 的用户应升级到 3.2.9 或更高版本
  • 4.x 的用户应升级到 4.0.5 或更高版本

鸣谢

此问题由 Mitsui Bussan Secure Directions, Inc. 的 Takeshi Terada 发现,并通过 JPCERT/CC 报告给 Pivotal。发现更多版本受到影响的信息...

CVE-2014-3527 Spring Security 中的访问控制绕过

| 2014 年 8 月 15 日 | CVE-2014-3527

描述

在使用 Spring Security 的 CAS Proxy ticket 认证时,恶意 CAS Service 可能欺骗另一个 CAS Service 认证未关联的代理票据。这是因为代理票据认证使用了 HttpServletRequest 中的信息,而该信息是根据 HTTP 请求中的不可信信息填充的。

这意味着如果存在关于哪些 CAS 服务可以相互认证的访问控制限制,这些限制可能会被绕过。

如果用户未使用 CAS Proxy ticket 且未基于 CAS Service 进行访问控制决策,则对用户没有影响。

受影响的 Spring 产品和版本

  • 3.1 到 3.2.4

缓解措施

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

  • 3.2x 的用户应升级到 3.2.5 或更高版本
  • 3.1.x 的用户应升级到 3.1.7 或更高版本

鸣谢

此问题由 David Ohsie 发现,并由 CAS 开发团队提请我们注意。

参考资料

CVE-2014-0225 使用 Spring MVC 时出现的 XML 外部实体 (XXE) 注入

| 2014 年 5 月 28 日 | CVE-2014-0225

描述

在处理用户提供的 XML 文档时,Spring Framework 默认未禁用 DTD 声明中 URI 引用的解析。这导致了 XXE 攻击。

受影响的 Spring 产品和版本

  • Spring MVC 3.0.0 到 3.2.8
  • Spring MVC 4.0.0 到 4.0.4
  • 更早的不受支持版本可能受到影响

缓解措施

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

  • 3.x 的用户应升级到 3.2.9 或更高版本
  • 4.x 的用户应升级到 4.0.5 或更高版本

鸣谢

此问题由 Nebula(XIAOBAISHAN,CHIBI,HUBEI.CN) HelloWorld 安全团队和 DBappsecurity.com 安全团队发现并负责任地报告给 Pivotal 安全团队。其他...

CVE-2014-0054 CVE-2013-7315 / CVE-2013-6429 (XXE) 修复不完整

| 2014 年 3 月 11 日 | CVE-2014-0054

描述

Spring MVC 的 Jaxb2RootElementHttpMessageConverter 也处理用户提供的 XML,并且既未禁用 XML 外部实体,也未提供禁用它们的选项。Jaxb2RootElementHttpMessageConverter 已被修改,以提供控制 XML 外部实体处理的选项,并且现在默认禁用该处理。

受影响的 Spring 产品和版本

  • Spring MVC 3.0.0 到 3.2.7
  • Spring MVC 4.0.0 到 4.0.1
  • 更早的不受支持版本可能受到影响

缓解措施

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

  • 3.x 的用户应升级到 3.2.8 或更高版本
  • 4.x 的用户应升级到 4.0.2 或更高版本

鸣谢

此问题由 Spase Markovski 报告给 Spring Framework 开发人员。

参考资料

CVE-2014-0097 空密码可能绕过用户认证

| 2014 年 3 月 11 日 | CVE-2014-0097

描述

ActiveDirectoryLdapAuthenticator 未检查密码长度。如果目录允许匿名绑定,则可能会错误地认证提供空密码的用户。

受影响的 Spring 产品和版本

  • Spring Security 3.2.0 到 3.2.1
  • Spring Security 3.1.0 到 3.1.5

缓解措施

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

  • 3.2.x 的用户应升级到 3.2.2 或更高版本
  • 3.1.x 的用户应升级到 3.1.6 或更高版本

鸣谢

此问题由 Spring 开发团队发现。

参考资料

CVE-2014-1904 使用 Spring MVC 时出现的 XSS

中等 | 2014 年 3 月 11 日 | CVE-2014-1904

描述

当程序员未在 Spring 表单上指定 action 时,Spring 会自动使用请求的 uri 填充 action 字段。攻击者可以利用此特性将恶意内容注入表单。

受影响的 Spring 产品和版本

  • Spring MVC 3.0.0 到 3.2.7
  • Spring MVC 4.0.0 到 4.0.1
  • 更早的不受支持版本可能受到影响

缓解措施

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

  • 3.x 的用户应升级到 3.2.8 或更高版本
  • 4.x 的用户应升级到 4.0.2 或更高版本

鸣谢

此问题由 CAaNES LLC 的 Paul Wowk 发现并负责任地报告给 Pivotal 安全团队。

参考资料

CVE-2013-6429 Spring Framework 中针对 XML 外部实体 (XXE) 注入 (CVE-2013-7315) 的修复不完整

| 2014 年 1 月 14 日 | CVE-2013-6429

描述

Spring MVC 的 SourceHttpMessageConverter 也处理用户提供的 XML,并且既未禁用 XML 外部实体,也未提供禁用它们的选项。SourceHttpMessageConverter 已被修改,以提供控制 XML 外部实体处理的选项,并且现在默认禁用该处理。随后发现此修复也不完整(CVE-2014-0054)。

受影响的 Spring 产品和版本

  • Spring MVC 3.0.0 到 3.2.4
  • Spring MVC 4.0.0.M1-4.0.0.RC1
  • 更早的不受支持版本可能受到影响

缓解措施

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

  • 3.x 的用户应升级到 3.2.5 或更高版本
  • 4.x 的用户应升级到 4.0.0 或更高版本(此问题在 4.0.0-RC2 中也已修复,但建议用户使用 4.0.0 或更高版本)
  • 为完全缓解此问题(包括 CVE-2014-0054),3.x 的用户应升级到 3.2.8 或更高版本,4.x 的用户应升级到 4.0.2 或更高版本。

鸣谢

此问题由 Spring 开发团队发现。

参考资料

历史记录

2014 年 1 月 15 日:初始漏洞报告。

  • 2014 年 6 月 19 日:更新以反映将 CVE-2013-4152 拆分为 CVE-2013-4152 和 CVE-2013-7315。添加了关于发现此修复不完整的附加漏洞报告的信息。

领先一步

VMware 提供培训和认证,助力您的进步。

了解更多

获取支持

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

了解更多

近期活动

查看 Spring 社区的所有近期活动。

查看全部