领先一步
VMware 提供培训和认证,助您加速进步。
了解更多除非另有说明,否则严重性为高。
Spring Security 5.8(5.8.5之前版本)、6.0(6.0.5之前版本)和6.1(6.1.2之前版本)可能容易受到授权规则配置错误的影响,如果应用程序使用requestMatchers(String)或requestMatchers(HttpMethod, String)并且存在多个servlet(其中一个为Spring MVC的DispatcherServlet)。
(DispatcherServlet是Spring MVC的一个组件,它将HTTP端点映射到带有@Controller注解的类中的方法。)
具体来说,当以下所有情况都为真时,应用程序是易受攻击的
DispatcherServlet)requestMatchers(String)或requestMatchers(HttpMethod, String)在以下任何一种情况为真时,应用程序不易受攻击:
DispatcherServlet之外不保护其他servletrequestMatchers(String)或requestMatchers(HttpMethod, String)受影响版本的用户应采用以下缓解措施。
首先
其次,如果您使用多个servlet,并且其中一个为Spring MVC的DispatcherServlet,您可能会在启动时看到以下错误消息
This method cannot decide whether these patterns are Spring MVC patterns or not.
If this endpoint is a Spring MVC endpoint, please use `requestMatchers(MvcRequestMatcher)`;
otherwise, please use `requestMatchers(AntPathRequestMatcher)`.
有时这些额外的servlet是不必要的。例如,一些servlet容器会添加一个DefaultServlet,而DispatcherServlet实际上取代了它。在许多情况下,这样的servlet可以从您的容器的全局配置中删除。
如果不需要额外的servlet,请尝试将其删除,看看错误是否仍然存在。如果仍然存在,请按照错误消息中的说明操作。
有关如何处理此错误消息的几个示例,请参见以下缓解措施仓库。
此问题由Kudelski Security的高级软件工程师Mouad Kondah发现并负责任地报告。
要报告 Spring 组合项目中存在的安全漏洞,请参阅安全策略