Spring Security 安全公告

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”。
  • 此外,应用程序应始终使用应用程序业务层中的其他授权来补充基于 URL 的授权,使用 Spring Security 的机制之一,例如添加 @Secured 注解。

致谢

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

参考文献

历史记录

2016年7月7日:发布初始漏洞报告

领先一步

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

了解更多

获取支持

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

了解更多

即将举行的活动

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

查看全部