网安引领时代,弥天点亮未来
VMware Spring Security是美国威睿(VMware)公司的一套为基于Spring的应用程序提供说明性安全保护的安全框架。VMware Spring Security存在授权问题漏洞,该漏洞源于在应用程序中使用 RegexRequestMatcher 以及正则表达式的通配符(.)处理不受信任的输入时存在输入验证错误。
Spring Security 5.5.x < 5.5.7
Spring Security 5.6.x < 5.6.4
Spring Security 其他低版本同样受影响
1.使用github上的漏洞环境
https://github.com/XuCcc/VulEnv/tree/master/springboot/cve_2022_229782.对漏洞进行复现
在URL中插入%0a或者%0d,即可绕过验证访问页面(\r的url编码为%0d回车\n的url编码为%0a换行)绕过验证
执行poc
admin/%0a%0d方式1
方式2
方式3
流量情况
漏洞成因,因为RegexRequestMatcher正则表达式处理的特性,导致可能某些需要认证的 Servlet 被绕过。
1.web接口
2.通过正则表达式匹配认证
3.漏洞触发点就在/admin/{name}接口。进入org.springframework.security.web.util.matcher.RegexRequestMatcher#matches方法中。
request.getServletPath() -->对字符解码 并且会将;之后的字符到/字符删除
request.getRequestURI() -->原样输出
当认证接口中使用了getRequestURI()或getRequestURL()函数来解析用户请求的URL时,若URL中包含了一些特殊符号就可能产生限制绕过的条件。
4.在校验的时候会产生认证的绕过,可以正常映射到/admin/*的路径上。
解码后
认证路径改为/admin/(?s).*
package person.xu.vulEnv;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.security.config.annotation.web.builders.HttpSecurity;import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;import org.springframework.security.core.userdetails.User;import org.springframework.security.core.userdetails.UserDetails;import org.springframework.security.provisioning.InMemoryUserDetailsManager;import org.springframework.security.web.SecurityFilterChain;import static org.springframework.security.config.Customizer.withDefaults;@Configuration@EnableWebSecuritypublic class AuthConfig {@Beanpublic SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {// @formatter:offhttp.authorizeHttpRequests((authorize) -> authorize.regexMatchers("/admin/(?s).*","/admin2").authenticated()).httpBasic(withDefaults()).formLogin(withDefaults());// @formatter:onreturn http.build();}// @formatter:off@Beanpublic InMemoryUserDetailsManager userDetailsService() {UserDetails user = User.withDefaultPasswordEncoder().username("user").password("password").roles("USER").build();return new InMemoryUserDetailsManager(user);}// @formatter:on}
测试漏洞不成功
官方提交的修复措施在5.6.4的diff中官方将DEFAULT默认匹配模式改为了Pattern.DOTALL点阵模式。在点阵模式下表达式会匹配\r\n等终止符,而在API文档中官方也进行了说明默认情况下,此表达式与行终止符不匹配。而后也将Pattern.DOTALL在开启大小写区分的情况下进行了组合,这样无论是否开启大小写模式均使用点阵模式进行匹配。
目前厂商已发布升级补丁以修复漏洞,补丁获取链接:
Spring Security 5.5.x 升级至 5.5.7
Spring Security 5.6.x 升级至 5.6.4
https://tanzu.vmware.com/security/cve-2022-22978参考链接
http://123.124.177.30/web/xxk/ldxqById.tag?CNNVD=CNNVD-202205-3584https://mp.weixin.qq.com/s/CgZ3T6Twz8v01YBVNmcPughttps://xz.aliyun.com/t/11473#toc-2https://www.freebuf.com/vuls/335704.html
弥天简介
学海浩茫,予以风动,必降弥天之润!弥天弥天安全实验室成立于2019年2月19日,主要研究安全防守溯源、威胁狩猎、漏洞复现、工具分享等不同领域。目前主要力量为民间白帽子,也是民间组织。主要以技术共享、交流等不断赋能自己,赋能安全圈,为网络安全发展贡献自己的微薄之力。
口号 网安引领时代,弥天点亮未来
知识分享完了
喜欢别忘了关注我们哦~
弥 天
安全实验室