[CVE-2022-22965]Spring Framework远程命令执行漏洞

一、背景

spring是一个开源的,轻量级控制反转和面向切面的容器框架,解决企业应用开发的复杂性,降低耦合,更易于测试。作为目前全球最受欢迎的Java轻量级开源框架,Spring允许开发人员专注于业务逻辑,简化Java企业级应用的开发周期。

3月29日,Spring框架曝出RCE 0day漏洞。已经证实由于 SerializationUtils#deserialize 基于 Java 的序列化机制,可导致远程代码执行 (RCE),使用JDK9及以上版本皆有可能受到影响。

二、漏洞利用条件

影响版本:

  • Spring Framework < 5.3.18

  • Spring Framework < 5.2.20

  • 其他衍生框架、版本

利用条件:

  • JDK9+
  • Spring 框架以及衍生的框架存在spring-beans-*.jar 文件或者存在CachedIntrospectionResults.class
  • 使用tomcat启动

三、漏洞POC

已有POC流出,请关注。

四、防御策略

1.waf增加防护规则:

class\s*\.\s*module\s*\.\s*classLoader.*=.*(jsp|exec|runtime|java|sun|spring|forname)

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 a{

@InitBinder

public void setAllowedFields(WebDataBinder dataBinder) {

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

dataBinder.setDisallowedFields(abd);

}

}

3.补丁修复

目前官方已给出修复补丁,请升级版本至5.2.20.RELEASE或5.3.18。

Releases · spring-projects/spring-framework · GitHub

五、漏洞靶场

Vulfocus 漏洞威胁分析平台

读者可以选择Spring Framework 远程命令执行漏洞靶场试玩。

六、漏洞分析预测

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值