【漏洞分析】Spring远程代码执行漏洞解决方案

作为目前全球最受欢迎的Java轻量级开源框架,Spring允许开发人员专注于业务逻辑,简化Java企业级应用的开发周期。

Spring此前版本存在CVE-2010-1622漏洞,该漏洞由参数自动绑定机制导致,后通过黑名单方式修复。但JDK9后引入了Module,使得可以通过GetModule绕过黑名单限制,最终导致远程代码执行。当前漏洞评级为高危,编号CVE-2022-22965/CNVD-2022-23942

攻击者在满足特定条件的情况下,可远程通过框架参数绑定功能获取AccessLogValve对象,从而触发pipeline机制并写入任意路径下的文件。

漏洞影响范围

已知受影响版本:

Spring Framework < 5.3.18

Spring Framework < 5.2.20

及其衍生产品:

JDK ≥ 9

JRE ≥ 9

不受影响版本:

Spring Framework = 5.3.18

Spring Framework = 5.2.20

JDK < 9

JRE < 9

我是否受到该漏洞威胁?(漏洞排查)

Step 1:检查是否使用Spring框架,若未使用,则不存在该漏洞。

由于Java项目存在打包方式各异、Spring Bean常作为基础组件Lib打包、非规范化命名等情况,推荐使用自动化迭代解压的jar方式同时对spring-beans-*.jar和CachedIntrospectionResults.class进行匹配搜索。如果存在匹配,说明使用了Spring框架。

Step 2:检查项目是否使用Spring参数绑定,若未使用,则不存在该漏洞。

由于该漏洞需要利用SpringMVC的参数绑定,因此项目若未使用参数绑定,则不受该漏洞威胁。

Step 3:检查中间件使用的JDK版本,若版本号小于9,则不存在该漏洞。

通过系统进程确认中间件使用的JDK路径,在命令行执行java-version获取当前的JDK版本。

Step 4:检查当前使用的中间件是否为Tomcat,若未使用,则暂不受该漏洞影响。

目前公开的漏洞利用代码只针对Tomcat中间件,但不排除后续有新的利用代码出现。因此,非Tomcat中间件仍存在风险。

Step 5:检查Tomcat是否启用AccessLog,若未启用,则暂不受该漏洞影响。

目前公开的漏洞利用代码是通过覆盖Tomcat日志相关配置实现后门文件写入,但不排除后续有新的利用方式出现。在server.xml配置文件中,通过org.apache.catalina.valves.AccessLogValve关键字,可定位到AccessLog相关配置。

我要如何防护该漏洞?(处置建议)

1、官方防护措施

官方已发布新版本5.2.20.RELEASE和5.3.18修复该漏洞,受影响的用户可尽快进行更新。

下载链接:https://github.com/spring-projects/spring-framework/releases

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、使用深度安全网关

深度安全网关已支持该漏洞防护,需要将规则包升级到20220331及以上版本。升级位置为:系统维护→系统升级→自动升级,点击立即升级或下载离线特征库手动升级。

  • 规则编号:957764
  • 规则名称:spring framework rce漏洞

防护前对比

防护后效果

参考链接

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

https://github.com/spring-projects/spring-framework/compare/v5.3.17...v5.3.18

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值