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

中等 | 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 的授权。

致谢

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

参考资料

历史

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

领先一步

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

了解更多

获得支持

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

了解更多

即将举行的活动

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

查看所有