导读
Spring Security身份认证绕过漏洞(CVE-2022-22978),尽管这一漏洞的披露时间追溯到2022年,但因其严重性和普遍性,至今仍然被列为重点关注的必修漏洞。
本篇内容作为第1期·漏洞处置SOP征文活动的入选SOP之一,将详细剖析CVE-2022-22978漏洞,并提供实用的处置方法和标准作业程序(SOP)。
我们热忱欢迎各位安全专家、技术爱好者积极投稿,分享你们的漏洞处置经验或是更优化的SOP建议。通过这样的形式,推广征集漏洞处置SOP,且提供一套行之有效的解决方案。
在下文中,我们将详细介绍CVE-2022-22978漏洞处置标准作业程序(SOP)。希望这些内容能对大家在实际工作中提供切实的帮助。
> SOP基本信息 <
-
SOP名称:CVE-2022-22978|Spring Security RegexRequestMatcher 认证绕过漏洞处置标准作业程序(SOP)
-
编写日期:2024-08-23
-
修订日期:2024-08-24
-
编写人员:lu(JAVA开发人员)
-
修订记录:
-
初始版本:创建SOP
-
> SOP的用途 <
该SOP旨在指导JAVA开发人员处置 Spring Security RegexRequestMatcher 认证绕过漏洞 (CVE-2022-22978) ,确保系统安全性和完整性,并按时提交给安全部门验证。
> SOP的目标用户技能要求 <
-
Spring Security 基础知识:了解 Spring Security 的基本概念和组件,尤其是与请求匹配和身份认证相关的部分。
-
正则表达式:熟悉RegexRequestMatcher 使用正则表达式来匹配请求路径的语法和应用。
-
漏洞分析和修复:了解如何识别和分析漏洞,并应用修复措施。能够跟踪和理解 Spring Security 的请求处理流程,以确定漏洞的具体位置和修复方法。
> 漏洞详细信息 <
-
漏洞名称:Spring Security 身份认证绕过漏洞
-
CVE编号:CVE-2022-22978
-
严重程度:严重
-
漏洞描述:Spring Security是一个能够为基于Spring的应用程序提供认证、授权以及保护免受攻击的安全框架。它是Spring项目的一部分,可以非常容易地集成到Spring应用中,为Java应用提供全面的安全解决方案。
当Spring Security使用RegexRequestMatcher进行权限配置时,由于RegexRequestMatcher正则表达式配置权限的特性,正则表达式中包含“.”时,未经身份验证攻击者可以通过构造恶意数据包绕过身份认证。 -
影响范围:
漏洞影响的 Spring Security 版本范围:-
Spring Security 5.5.x < 5.5.7
-
Spring Security 5.6.x < 5.6.4
-
以及较老的不再受支持的版本。
-
> 漏洞处置方案 <
官方已发布漏洞补丁及修复版本,请评估业务是否受影响后,酌情升级至安全版本:
-
Spring Security 5.5.x:官方建议将版本升级至5.5.7或更高版本。
-
Spring Security 5.6.x:官方建议将版本升级至5.6.4或更高版本。
-
其他受影响的Spring Security版本:同样建议升级到安全版本。
补丁下载和更新:用户可以通过GitHub下载和更新Spring Security到上述安全版本 。(https://github.com/spring-projects/spring-security/tags)
安全建议:在升级到安全版本之前,建议用户备份数据并进行充分测试,以确保升级过程的顺利进行和应用的稳定性。
参考链接:
-
https://www.huaweicloud.com/notice/2021/20220525183347168.html
-
https://spring.io/security/cve-2022-22978
*注意事项:
-
在应用补丁或升级版本之前,请确保进行充分的备份。
-
遵循官方提供的安装和配置指南进行操作。
-
在生产环境中升级前,最好在测试环境中先进行测试。
-
修复漏洞前进行充分测试,以确保系统稳定性和安全性。
-
不同版本系列尽量升级到本系列版本无漏洞的版本,尽量不要版本跨度太大,避免出现一些不兼容情况。
> 详细修复步骤 <
-
使用开发工具打开受影响的工程
-
本文以idea为例
-
-
确定当前 Spring Security 版本
-
打开External Libraries查看相关依赖,本文以受影响的spring-security5.5.4版本为例:
-
-
修改pom文件升级spring-boot-starter-parent版本,spring-boot-starter-security则会引入相应版本
-
创建新分支用于漏洞修复
-
修改pom文件中spring-boot-starter-parent版本,本文以升级到spring-boot-starter-parent-2.7.0为例,spring-boot-starter-security则会引入5.7.1版本:
-
-
重新编译打包工程
-
编译打包命令
mvn clean install
-
-
启动对应服务
-
启动命令
java -jar xxx.jar
-
-
验证修复效果:
-
优先在测试环境进行验证,当使用spring-security5.5.4版本时,访问测试接口http://localhost:8080/admin/1,结果需要认证,访问http://localhost:8080/admin/1%0a时,则可以绕过认证,证明漏洞存在。
-
将spring-security版本升级为5.7.1,访问http://localhost:8080/admin/1%0a时,页面会提示500,证明已无法通过恶意构造正则表达式来绕过认证。
-
测试环境验证结束,在生产环境进行升级时,建议用户备份数据,以确保升级过程的顺利进行和应用的稳定性,升级完成后访问系统相关功能进行测试,确保漏洞已被成功修复。
-
-
记录处置过程:
-
撰写漏洞处置报告,详细记录修补步骤、日期和结果。
-
-
提交报告:
-
将漏洞处置报告提交给安全部门,等待验证和确认。
-
- End -
第一期征文活动其它入选SOP
1. CVE-2019-14439|FasterXML jackson-databind 信息泄露漏洞处置标准作业程序(SOP)
作者:Jungle
2. CVE-2020-1938|Apache Tomcat 文件包含漏洞处置SOP
作者:SSS
3. CVE-2018-1273|Pivotal Spring Data Commons和Spring Data REST 安全漏洞处置SOP
作者:Jungle
4. CVE-2017-18349|FastJson 远程代码执行漏洞处置标准作业程序(SOP)
作者:Blue
我们将持续征集SOP,欢迎更多伙伴参与编写漏洞处置SOP,加入社区,共同锤炼安全金钥。
SOP作品征集活动持续进行中,欢迎联系运营同学报名:
注:可扫码添加「运营助手」报名咨询或获取本文公布的 5 篇入选SOP(PDF格式),每人限领 1 份。
扫码添加运营助手
▽