Spring框架远程命令执行漏洞(CNVD-2022-23942)

前言

3月30日,国家信息安全漏洞共享平台(CNVD)收录了Spring框架远程命令执行漏洞(CNVD-2022-23942)。该漏洞是继Apache Log4j2漏洞之后的又一严重漏洞事件,引起业界高度关注。该漏洞可能已被远程攻击者利用,漏洞威胁等级被定为高危、非常紧急。30日晚上朋友圈里更是像过年了一样,都在等一个poc。当天晚上呢这个漏洞的热度极高,也是出现了各种伪造成poc的钓鱼文件,目前呢官方也未给出修复方案。我先针对这个漏洞给出一点我自己的看法,第二天进行复现后发现呢,这个漏洞跟想象的不大一样,我个人觉得很鸡肋,当天聊起这个漏洞的时候就觉得这个漏洞是属于好用的,但是又没啥大用,不知道你们能不能明白我的意思,相对来说一些自研平台可能受影响会大一点。

漏洞简介

Spring是目前最受欢迎的开源轻量级Java框架,近日,Spring被曝存在RCE 0day漏洞。已经证实由于SerializationUtils#deserialize基于Java的序列化机制,可导致远程代码执行(RCE),使用JDK9及以上版本皆有可能受到影响。

漏洞影响范围

据了解,受漏洞影响的产品版本包括:

  1. JDK 版本号 9 及以上的;
  2. 使用了Spring 框架或衍生框架。建议开发者进行JDK版本号(注:如果版本号小于等于8,则不受漏洞影响)和Spring框架使用情况进行排查。

自查

在服务器中执行“java -version”命令查看运行的JDK版本,如果版本号小于等于8,则不受漏洞影响

修复方案

目前,Spring官方已发布新版本完成漏洞修复,CNVD建议受漏洞影响的产品(服务)厂商和信息系统运营者尽快进行自查,并及时升级至最新版本:https://spring.io/blog/2022/03/31/spring-framework-rce-early-announcement
缓释方案
1.在应用中全局搜索@InitBinder注解,方法体中若调用dataBinder.setDisallowedFields,则在原来的黑名单中添加"class.","Class.", “.class.”, “.Class.”。
【注:如果此代码片段使用较多,需要每个地方都追加。】
2.若未发现,可通过@ControllerAdvice进行全局拦截,通过WebDataBinder中setDisallowedFields方法添加黑名单。参考代码:

importorg.springframework.web.bind.WebDataBinder;
importorg.springframework.web.bind.annotation.ControllerAdvice;
importorg.springframework.web.bind.annotation.InitBinder;

@ControllerAdvice
@Order(Ordered.LOWEST_PRECEDENCE)
public class BinderControllerAdvice {
    @InitBinder
    public voidsetAllowedFields(WebDataBinder dataBinder) {
         String[] denylist = newString[]{"class.*", "Class.*", "*.class.*","*.Class.*"};
        dataBinder.setDisallowedFields(denylist);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ba1s1r

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值