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。
➡️