漏洞描述
漏洞编号
CVE-2022-22965
风险等级
严 重
影响范围
Spring Framework 5.3.X < 5.3.18
Spring Framework 5.2.X < 5.2.20
漏洞影响排查方法
方法一:
● JDK版本排查
在业务系统的服务器上,执行"java-version"命令查看运行的JDK版本,如果JDK版本号≤8,则不受该漏洞影响。
● Spring框架使用情况排查
1. 如果业务系统项目以 war 包形式部署,按照如下的步骤进行判断:
- 解压 war 包:将 war 文件的后缀修改成 .zip 文件;
- 在解压目录下搜索是否存在spring-beans-*.jar 格式的文件(例如spring-beans-5.3.16.jar),如存在则说明业务系统使用了 Spring 框架进行开发;
- 如果spring-beans-*.jar 文件不存在,则在解压目录下搜索CachedlntrospectionResults.class 文件,如存在则说明业务系统使用了Spring框架进行开发。
2. 如果业务系统项目以 jar 包形式独立运行,按照如下的步骤进行判断:
- 解压 jar 包:将 jar 文件的后缀修改成 zip,解压 zip 文件;
- 在解压目录下搜索是否存在spring-beans-*.jar 格式的 jar 文件(例如 spring-beans-5.3.16.jar),如存在则说明业务系统使用了Spring 框架进行开发;
- 如果spring-beans-*.jar 文件不存在,则在解压目录下搜索CachedIntrospectionResults.class 文件,如果存在则说明业务系统使用了 Spring 框架进行开发。
● 综合判断
完成以上两个步骤排査后,同时满足以下两个条件可确定受此漏洞影响:
1. JDK 版本 ≥ 9 ;
2. 使用了 Spring 框架或衍生框架;
3. 项目中Web接口使用JavaBean对象作为参数。
方法二:
Vackbot已支持Spring Framework漏洞检测,用户可以通过在Vackbot上对系统进行渗透测试,排查是否存在该漏洞。
● 官方修复建议
目前官方已经发布补丁,可升级Spring到 5.3.18 或 5.2.20 安全版本进行漏洞修复。
https://github.com/spring-projects/spring-framework/tags
import org.springframework.core.annotation.Order;
import org.springframework.web.bind.WebDataBinder;
import
org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.InitBinder;
@ControllerAdvice
@Order(1)
public class GlobalControllerAdvice{
@InitBinder
public void setAllowedFields(webdataBinder dataBinder){
String[]abd=new
string[]{"class.*","Class.*","*.class.*","*.Class.*"};
dataBinder.setDisallowedFields(abd);
} }
往期回顾