VMware Spring Security 身份认证绕过漏洞(CVE-2022-22978)

admin 2023年2月24日02:44:43评论104 views字数 2915阅读9分43秒阅读模式



网安引领时代,弥天点亮未来   





 

VMware Spring Security 身份认证绕过漏洞(CVE-2022-22978)

0x00写在前面

本次测试仅供学习使用,如若非法他用,与平台和本文作者无关,需自行负责!
VMware Spring Security 身份认证绕过漏洞(CVE-2022-22978)

0x01漏洞介绍

































VMware Spring Security是美国威睿(VMware)公司的一套为基于Spring的应用程序提供说明性安全保护的安全框架。VMware Spring Security存在授权问题漏洞,该漏洞源于在应用程序中使用 RegexRequestMatcher 以及正则表达式的通配符(.)处理不受信任的输入时存在输入验证错误。



   VMware Spring Security 身份认证绕过漏洞(CVE-2022-22978)



VMware Spring Security 身份认证绕过漏洞(CVE-2022-22978)

0x02影响版本

Spring Security 5.5.x < 5.5.7 

Spring Security 5.6.x < 5.6.4 

Spring Security 其他低版本同样受影响



VMware Spring Security 身份认证绕过漏洞(CVE-2022-22978)

0x03漏洞复现

1.使用github上的漏洞环境

https://github.com/XuCcc/VulEnv/tree/master/springboot/cve_2022_22978

VMware Spring Security 身份认证绕过漏洞(CVE-2022-22978)

2.对漏洞进行复现

在URL中插入%0a或者%0d,即可绕过验证访问页面(r的url编码为%0d回车n的url编码为%0a换行)绕过验证

VMware Spring Security 身份认证绕过漏洞(CVE-2022-22978)

执行poc

admin/%0a%0d

方式1

VMware Spring Security 身份认证绕过漏洞(CVE-2022-22978)

方式2

VMware Spring Security 身份认证绕过漏洞(CVE-2022-22978)

方式3

VMware Spring Security 身份认证绕过漏洞(CVE-2022-22978)

流量情况

VMware Spring Security 身份认证绕过漏洞(CVE-2022-22978)



VMware Spring Security 身份认证绕过漏洞(CVE-2022-22978)

0x04漏洞分析

漏洞成因,因为RegexRequestMatcher正则表达式处理的特性,导致可能某些需要认证的 Servlet 被绕过。

1.web接口

VMware Spring Security 身份认证绕过漏洞(CVE-2022-22978)

2.通过正则表达式匹配认证

VMware Spring Security 身份认证绕过漏洞(CVE-2022-22978)


3.漏洞触发点就在/admin/{name}接口。进入org.springframework.security.web.util.matcher.RegexRequestMatcher#matches方法中。

request.getServletPath() -->对字符解码 并且会将;之后的字符到/字符删除

request.getRequestURI() -->原样输出

VMware Spring Security 身份认证绕过漏洞(CVE-2022-22978)

当认证接口中使用了getRequestURI()或getRequestURL()函数来解析用户请求的URL时,若URL中包含了一些特殊符号就可能产生限制绕过的条件。

4.在校验的时候会产生认证的绕过,可以正常映射到/admin/*的路径上。

VMware Spring Security 身份认证绕过漏洞(CVE-2022-22978)


VMware Spring Security 身份认证绕过漏洞(CVE-2022-22978)

解码后

VMware Spring Security 身份认证绕过漏洞(CVE-2022-22978)

VMware Spring Security 身份认证绕过漏洞(CVE-2022-22978)

认证路径改为/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 { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { // @formatter:off http .authorizeHttpRequests((authorize) -> authorize .regexMatchers("/admin/(?s).*","/admin2").authenticated() ) .httpBasic(withDefaults()) .formLogin(withDefaults()); // @formatter:on return http.build(); }

// @formatter:off @Bean public InMemoryUserDetailsManager userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); return new InMemoryUserDetailsManager(user); } // @formatter:on}

测试漏洞不成功

VMware Spring Security 身份认证绕过漏洞(CVE-2022-22978)

官方提交的修复措施在5.6.4的diff中官方将DEFAULT默认匹配模式改为了Pattern.DOTALL点阵模式。在点阵模式下表达式会匹配rn等终止符,而在API文档中官方也进行了说明默认情况下,此表达式与行终止符不匹配。而后也将Pattern.DOTALL在开启大小写区分的情况下进行了组合,这样无论是否开启大小写模式均使用点阵模式进行匹配。

VMware Spring Security 身份认证绕过漏洞(CVE-2022-22978)

0x05修复建议

目前厂商已发布升级补丁以修复漏洞,补丁获取链接:

Spring Security 5.5.x 升级至 5.5.7 

Spring Security 5.6.x 升级至 5.6.4

https://tanzu.vmware.com/security/cve-2022-22978


VMware Spring Security 身份认证绕过漏洞(CVE-2022-22978)

0x06修复建议

参考链接

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日,主要研究安全防守溯源、威胁狩猎、漏洞复现、工具分享等不同领域。目前主要力量为民间白帽子,也是民间组织。主要以技术共享、交流等不断赋能自己,赋能安全圈,为网络安全发展贡献自己的微薄之力。

口号 网安引领时代,弥天点亮未来


















VMware Spring Security 身份认证绕过漏洞(CVE-2022-22978) 


知识分享完了

喜欢别忘了关注我们哦~


学海浩茫,

予以风动,
必降弥天之润!


   弥  天

安全实验室

VMware Spring Security 身份认证绕过漏洞(CVE-2022-22978)


原文始发于微信公众号(弥天安全实验室):VMware Spring Security 身份认证绕过漏洞(CVE-2022-22978)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年2月24日02:44:43
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   VMware Spring Security 身份认证绕过漏洞(CVE-2022-22978)https://cn-sec.com/archives/1570316.html

发表评论

匿名网友 填写信息