0%

Spring Security 权限绕过(CVE-2022-22978)

在Java中正则表达式.默认不包含\n\r,需要设置DOTALL才会匹配所有字符。而Spring Security在通过正则设置路由权限时,未设置DOTALL,导致某些情况下可以通过\n\r来绕过权限控制。

影响范围

  • Spring Security
    • < 5.5.7
    • >= 5.6.0, < 5.6.4

环境搭建

1
2
3
git clone https://github.com/l3yx/vuln-debug.git
cd vuln-debug/spring-security/CVE-2022-22978
docker-compose up -d

漏洞复现

Spring Security配置如下:

image-20220716203325350

Controller如下:

image-20220716213004515

正常访问返回403:

image-20220716203148959

使用\r或者\n绕过:

image-20220716203124768

漏洞分析

由官方公告CVE-2022-22978: Authorization Bypass in RegexRequestMatcher,漏洞和RegexRequestMatcher有关。

image-20220716183917080

对比漏洞版本5.5.6和已修复版本5.5.7https://github.com/spring-projects/spring-security/compare/5.5.6..5.5.7

image-20220716184215116

image-20220716184242715

参考

Authorization bypass in Spring Security