漏洞描述

近日,墨云科技监测到Spring框架中存在远程代码执行漏洞,在JDK 9及以上版本环境下,攻击者通过构造恶意的请求修改中间件的日志文件,从而实现远程代码执行。

由于该漏洞的严重性,建议使用Spring框架组件的客户尽快自查是否受漏洞影响,并采取措施防止漏洞攻击。目前,墨云科技Vackbot产品已更新针对该漏洞进行自动化渗透的能力。

漏洞编号

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/spring-projects/spring-framework/tags

● WAF防护

在网络防护设备上,根据实际部署业务的流量情况,对 “class.module.*” 字符串添加过滤规则,在部署过滤规则后,对业务运行情况进行测试,避免产生额外影响。

● 临时修复措施

同时按以下两个步骤进行漏洞的临时修复:

\1. 在应用中全局搜索@InitBinder 注解,看方法体内是否调用dataBinder.setDisallowedFields方法,如果发现代码中有调用该方法,则在原来的黑名单中添加"class.module.*"。

注意:如果此代码片段使用较多,需要每个地方都追加。

\2. 在应用系统的项目包下新建以下全局类,并保证这个类被 Spring 加载到(推荐在 Controller 所在的包中添加),完成类添加后,需对项目进行重新编译打包和功能验证测试,并重新发布项目。

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);
} }

墨云科技技术支持

墨云科技后续将积极为用户提供技术支持,进行持续跟踪并及时通报进展,如有需要请拨打电话86-10-62960509。

或搜索“墨云安全”公众号,获取墨云科技更多资讯,期待您的关注。

更多推荐

Vackbot已覆盖 |【漏洞通告】Spring框架远程代码执行漏洞