• 产品与解决方案
  • 行业解决方案
  • 服务
  • 支持
  • 合作伙伴
  • 新华三人才研学中心
  • 关于我们
docurl=/cn/Products___Technology/Products/IP_Security/Security_Research/Home/Notice/Notice/202207/1644542_30003_0.htm

Spring框架远程代码执行漏洞通告(CVE-2022-22965)

【发布时间:2022-07-06】

漏洞综述

漏洞背景

Spring是Java EE编程领域的一个轻量级开源框架,提供了功能强大IOC、AOP及Web MVC等功能。近日,新华三攻防实验室威胁预警团队监测到Spring框架存在远程代码执行漏洞(CVE-2022-22965),也被称为SpringShell或Spring4Shell,并及时进行了跟踪和分析。在JDK9及以上版本环境中,使用受影响的Spring框架及衍生框架会受该漏洞影响,远程攻击者可写入任意文件,从而导致远程代码执行。

漏洞原理

由于Spring处理流程存在缺陷,在JDK9及以上版本的Spring框架环境中,远程攻击者可在满足特定条件的基础上,通过框架的参数绑定功能获取AccessLogValve对象并注入恶意字段值,触发pipeline机制,从而在任意路径下写入文件。

由于Spring框架应用十分广泛,影响范围大,目前已监测到漏洞利用细节及利用脚本被公开,漏洞利用方式简单,建议受影响用户尽快排查修复或升级到最新安全版本,避免遭受漏洞攻击。

漏洞复现

搭建受影响版本的漏洞环境,发送带有恶意数据的请求,可在服务器中写入恶意文件。

图片

影响范围

JDK >= 9 & Spring Framework < 5.3.18

JDK >= 9 & Spring Framework < 5.2.20

漏洞等级:严重

处置方法

官方补丁

目前Spring官方已发布最新漏洞修复版本,请受影响用户及时升级安装。下载链接:https://github.com/spring-projects/spring-framework/releases。安全版本:Spring Framework = 5.3.18, Spring Framework =5.2.20

漏洞排查方案

受该漏洞影响的环境需要同时满足以下条件:

1) JDK版本大于等于9

2) 使用受影响的Spring框架或衍生框架

3) Spring-webmvc或Spring-webflux依赖项

1、 排查JDK版本

在使用Spring框架的服务器中,命令行下执行“java –version”,查看当前JDK版本,如果JDK版本在8及以下,则不受此漏洞影响。

2、 排查Spring框架

(1)业务系统通过war包部署

a. 解压war包:将war包文件的后缀名改为zip,解压该zip文件;

b. 在解压后的文件目录中搜索是否存在如spring-beans-*.jar形式的jar文件,若存在,说明采用了spring框架;

c. 若没有spring-beans-*.jar形式的jar文件,则搜索是否存在CachedInstrospectionResults.class文件,若存在,说明采用了spring框架。

(2) 业务系统通过jar包部署

a. 解压jar包:将jar包文件的后缀名改为zip,解压该zip文件;

b. 在解压后的文件目录中搜索是否存在如spring-beans-*.jar形式的jar文件,若存在,说明采用了spring框架;

c. 若没有spring-beans-*.jar形式的jar文件,则搜索是否存在CachedInstrospectionResults.class文件,若存在,说明采用了spring框架。

临时修复措施

如暂时无法升级至安全版本,受影响用户可采取以下临时方案进行修复。

1、 在应用中全局搜索@InitBinder注解,查看方法体内是否调用dataBinder.setDisallowedFields方法,如果存在该代码片段的引入,则在原来的黑名单中添加{“class.*”,“Class.*”,“*.class.*”,“*.Class.*”}。

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

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(10000)

public class GlobalControllerAdvice{

@InitBinder

public void setAllowedFields(WebDataBinder dataBinder){

String[] abd=new String[]{"class.*","Class.*","*.class.*","*.Class.*"};

dataBinder.setDisallowedFields(abd);

}

}

新华三解决方案

1、新华三安全设备防护方案

新华三IPS规则库将在1.0.176版本支持对该漏洞的识别,新华三全系安全产品可通过升级IPS特征库识别该漏洞的攻击流量,并进行主动拦截。

2、新华三态势感知解决方案

新华三态势感知已支持该漏洞的检测,通过信息搜集整合、数据关联分析等综合研判手段,发现网络中遭受该漏洞攻击及失陷的资产。

3、新华三云安全能力中心解决方案

新华三云安全能力中心知识库已更新该漏洞信息,可查询对应漏洞产生原理、升级补丁、修复措施等。

参考链接

https://github.com/spring-projects/spring-framework/commit/7f7fb58dd0dae86d22268a4b59ac7c72a6c22529

https://spring.io/blog/2022/03/31/spring-framework-rce-early-announcement

https://spring.io/blog/2022/03/31


新华三官网
联系我们