Shiro CVE-2023-22602 补丁失效导致的路径匹配绕过

💡 原文中文,约2900字,阅读约需7分钟。
📝

内容提要

Apache Shiro 1.11.0之前版本与Spring Boot 2.6+结合使用时存在认证绕过漏洞。需更新Shiro或将Spring Boot配置设置为ANT_PATH_MATCHER以修复。

🎯

关键要点

  • Apache Shiro 1.11.0之前版本与Spring Boot 2.6+结合使用时存在认证绕过漏洞。
  • 认证绕过发生在Shiro和Spring Boot使用不同的模式匹配技术时。
  • Shiro和Spring Boot 2.6之前默认使用Ant风格的模式匹配。
  • 修复方法是更新Apache Shiro到1.11.0,或将Spring Boot配置设置为ANT_PATH_MATCHER。
  • Spring Boot 2.6及以上版本默认使用PATH_PATTERN_PARSER匹配策略。
  • 漏洞的原因是Shiro对路径进行规范化,而Spring Boot不会,导致认证绕过。
  • CVE-2020-17510的补丁在Spring Boot 2.6后失效。
  • 为恢复失效的补丁,需要将匹配模式强制改为ANT_PATH_MATCHER。

延伸问答

Apache Shiro 1.11.0之前的版本存在什么漏洞?

Apache Shiro 1.11.0之前版本与Spring Boot 2.6+结合使用时存在认证绕过漏洞。

如何修复Apache Shiro的认证绕过漏洞?

可以通过更新Apache Shiro到1.11.0,或将Spring Boot配置设置为ANT_PATH_MATCHER来修复。

Spring Boot 2.6及以上版本的默认匹配策略是什么?

Spring Boot 2.6及以上版本默认使用PATH_PATTERN_PARSER匹配策略。

为什么CVE-2020-17510的补丁在Spring Boot 2.6后失效?

CVE-2020-17510的补丁在Spring Boot 2.6后失效是因为Spring Boot默认采用了PATH_PATTERN_PARSER匹配模式,导致补丁无法生效。

Shiro和Spring Boot之间的认证绕过是如何发生的?

认证绕过发生在Shiro和Spring Boot使用不同的模式匹配技术时,Shiro对路径进行规范化,而Spring Boot不会。

如何强制将Spring Boot的匹配模式改为ANT_PATH_MATCHER?

可以通过设置Spring Boot配置值spring.mvc.pathmatch.matching-strategy = ant_path_matcher来强制改为ANT_PATH_MATCHER。

➡️

继续阅读