CVE-2016-5007 Spring Security / MVC 路径匹配不一致

MEDIUM | 2016 年 7 月 7 日 | CVE-2016-5007

描述

Spring Security 和 Spring Framework 都依赖于 URL 模式映射来进行授权,以及将请求映射到相应的控制器。

模式匹配机制的严格程度不同,例如路径段中空格的修剪,可能导致 Spring Security 无法识别某些路径为未受保护的,但这些路径实际上映射到应该受到保护的 Spring MVC 控制器。

由于 Spring Framework 提供了更丰富的功能用于模式匹配,并且 Spring Security 和 Spring Framework 中的模式匹配都可以轻松定制,从而导致了更多差异,因此问题更加复杂。

受影响的 Spring 产品和版本

  • Spring Security 3.2.x、4.0.x、4.1.0
  • Spring Framework 3.2.x、4.0.x、4.1.x、4.2.x
  • 其他不受支持的版本也受到影响

缓解措施

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

  • 为了全面解决这些问题,Spring Security 提供了 URL 授权,可以将模式匹配委托给 Spring Framework。 为了利用此选项,应用程序应升级到 Spring Security 4.1.1+Spring Framework 4.3.1+ 并使用 MvcRequestMatcher
  • 从 Spring Framework 4.3.0+ 开始,AntPathMatcher 配置为 trimTokens 设置为 "false",这与 Spring Security 一致。 因此,仅使用 Spring Framework 4.3.0+ 就可以消除路径匹配不一致的某些原因。
  • Spring Framework 3.2.x、4.0.x、4.1.x、4.2.x 的用户可以使用 MVC Java 配置MVC 命名空间AntPathMatchertrimTokens 属性设置为 "false"。
  • 此外,应用程序应始终在应用程序的业务层中使用 Spring Security 的机制(例如添加 @Secured 注解)来补充基于 URL 的授权。

贡献

该漏洞由来自 INTRINSEC 的 Clément Notin 负责任地报告。

参考

历史

2016-7 月-07:首次发布漏洞报告

领先一步

VMware 提供培训和认证来加速您的进步。

了解更多

获取支持

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

了解更多

即将到来的活动

查看 Spring 社区中所有即将到来的活动。

查看全部