Vackbot已覆盖 |【漏洞通告】Spring框架远程代码执行漏洞
2022-4-1 11:51:56 Author: mp.weixin.qq.com(查看原文) 阅读量:9 收藏

V-lab实验室

 漏洞描述

近日,墨云科技监测到Spring框架中存在远程代码执行漏洞,在JDK 9及以上版本环境下,攻击者通过构造恶意的请求修改中间件的日志文件,从而实现远程代码执行。
由于该漏洞的严重性,建议使用Spring框架组件的客户尽快自查是否受漏洞影响,并采取措施防止漏洞攻击。目前,墨云科技Vackbot产品已更新针对该漏洞进行自动化渗透的能力。

 漏洞编号

CVE-2022-22965

 风险等级

严  重

 影响范围

  • Spring Framework 5.3.X < 5.3.18

  • Spring Framework 5.2.X < 5.2.20

 漏洞影响排查方法

方法一:

● JDK版本排查

在业务系统的服务器上,执行"java-version"命令查看运行的JDK版本,如果JDK版本号≤8,则不受该漏洞影响。

● Spring框架使用情况排查

1. 如果业务系统项目以 war 包形式部署,按照如下的步骤进行判断:

- 解压 war 包:将 war 文件的后修改成 .zip 文件;

- 在解压目录下搜索是否存在spring-beans-*.jar 格式的文件(例如spring-beans-5.3.16.jar),如存在则说明业务系统使用了 Spring 框架进行开发;

- 如果spring-beans-*.jar 文件不存在,则在解压目录下搜索CachedlntrospectionResults.class 文件,如存在则说明业务系统使用了Spring框架进行开发。

2. 如果业务系统项目以 jar 包形式独立运行,按照如下的步骤进行判断:

- 解压 jar 包:将 jar 文件的后缀修改成 zip,解压 zip 文件;

- 在解压目录下搜索是否存在spring-beans-*.jar 格式的 jar 文件(例如 spring-beans-5.3.16.jar),如存在则说明业务系统使用了Spring 框架进行开发;

- 如果spring-beans-*.jar 文件不存在,则在解压目录下搜索CachedIntrospectionResults.class 文件,如果存在则说明业务系统使用了 Spring 框架进行开发。

● 综合判断

完成以上两个步骤排査后,同时满足以下两个条件可确定受此漏洞影响:

1. JDK 版本 ≥ 9 ;

2. 使用了 Spring 框架或衍生框架;

3. 项目中Web接口使用JavaBean对象作为参数。

方法二:

Vackbot已支持Spring Framework漏洞检测,用户可以通过在Vackbot上对系统进行渗透测试,排查是否存在该漏洞。

 修复建议

● 官方修复建议

目前官方已经发布补丁,可升级Spring到 5.3.18 或 5.2.20 安全版本进行漏洞修复。

https://github.com/spring-projects/spring-framework/tags

● WAF防护
在网络防护设备上,根据实际部署业务的流量情况,对 "class.module.*" 字符串添加过滤规则,在部署过滤规则后,对业务运行情况进行测试,避免产生额外影响。
● 临时修复措施
同时按以下两个步骤进行漏洞的临时修复:
1. 在应用中全局搜索@InitBinder 注解,看方法体内是否调用dataBinder.setDisallowedFields方法,如果发现代码中有调用该方法,则在原来的黑名单中添加"class.module.*"。
注意:如果此代码片段使用较多,需要每个地方都追加。
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(1)public class GlobalControllerAdvice{ @InitBinderpublic void setAllowedFields(webdataBinder dataBinder){String[]abd=new string[]{"class.*","Class.*","*.class.*","*.Class.*"};dataBinder.setDisallowedFields(abd);} }
 墨云科技技术支持
墨云科技后续将积极为用户提供技术支持,进行持续跟踪并及时通报进展,如有需要请拨打电话86-10-62960509。
或搜索“墨云安全”公众号,获取墨云科技更多资讯,期待您的关注。

往期回顾

引领智能网络攻防科技
点击在看
分享给小伙伴
↓点击阅读原文,了解更多墨云信息

文章来源: https://mp.weixin.qq.com/s?__biz=MzkwNzIxMDUyNg==&mid=2247484549&idx=1&sn=63b79085820dd2076afdc7f3437afb22&chksm=c0ddfef4f7aa77e20f7724559b20aa185f93c567a6a89fc564cd827ff594cc4bdb9a1fbf1867&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh