欢迎user
漏洞综述
漏洞背景
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