Spring Framework远程代码执行漏洞(CVE-2022-22965)

admin 2025年2月24日12:59:51评论27 views字数 2631阅读8分46秒阅读模式

0x00 漏洞概述

CVE   ID

CVE-2022-22965

时    间

2022-03-31

类    型

RCE

等    级

严重

远程利用

影响范围

攻击复杂度

用户交互

PoC/EXP

已公开

在野利用

0x01 漏洞详情

Spring Framework 是一个开源的轻量级J2EE应用程序开发框架。

3月31日,VMware发布安全公告,修复了Spring Framework中的远程代码执行漏洞(CVE-2022-22965)。在 JDK 9 及以上版本环境下,可以利用此漏洞在未授权的情况下在目标系统上写入恶意程序从而远程执行任意代码。

该漏洞影响了在JDK 9+上运行的Spring框架或其衍生框架构建的网站或应用,目前官方已在Spring Framework5.3.18+和5.2.20+中修复了此漏洞。鉴于此漏洞的PoC/EXP已公开,建议相关用户尽快排查修复。

影响范围

运行环境为JDK9及以上版本的:

Spring Framework 5.3.0 -5.3.17

Spring Framework 5.2.0 - 5.2.19

以及其它旧版的、不受支持的版本。

0x02 安全建议

通用修复

目前官方已经修复了此漏洞,受影响用户可以升级更新到Spring Framework5.3.18或5.2.20。

下载链接:

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

漏洞排查

当同时满足以下条件时,表明可能受此漏洞影响:

  • JDK版本 >= 9;

  • 使用Spring框架或衍生框架,当前使用了Tomcat中间件(目前公开的漏洞利用代码只针对Tomcat中间件,但不排除存在其它风险)。

排查方法

  • JDK版本号排查

执行“java -version"命令查看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、在应用中全局搜索@InitBinder注解,看看方法体内是否调用dataBinder.setDisallowedFields方法,如果发现此代码片段的引入,则在原来的黑名单中,添加{"class.*","Class.*","*.class.*","*.Class.*"}。注:如果此代码片段使用较多,需要每个地方都追加。

2、在用系统的项目包下新建以下全局类,并保证这个类被Spring 加载到(推荐在Controller所在的包中添加)。完成类添加后,需对项目进行重新编译打包和功能验证测试,并重新发布项目。

importorg.springframework.core.annotation.Order;

importorg.springframework.web.bind.WebDataBinder;

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

import org.springframework.web.bind.annotation.InitBinder;

@ControllerAdvice

@Order(10000)

public classGlobalControllerAdvicc{

@InitBinder

public voidsetAllowedFields(webdataBinder dataBinder){

String[]abd=newstring[]{"class.*","Class.*","*.class.*","*.Class.*"};           dataBinder.setDisallowedFields(abd);

}

}

0x03 参考链接

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

https://tanzu.vmware.com/security/cve-2022-22965

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

0x04 版本信息

版本

日期

修改内容

V1.0

2022-03-31

首次发布

0x05 附录

公司简介
启明星辰公司成立于1996年,并于2010年6月23日在深交所中小板正式挂牌上市,是国内极具实力的、拥有完全自主知识产权的网络安全产品、可信安全管理平台、安全服务与解决方案的综合提供商。
公司总部位于北京市中关村软件园,在全国各省、市、自治区设有分支机构,拥有覆盖全国的渠道体系和技术支持中心,并在北京、上海、成都、广州、长沙、杭州等多地设有研发中心。
多年来,启明星辰致力于提供具有国际竞争力的自主创新的安全产品和最佳实践服务,帮助客户全面提升其IT基础设施的安全性和生产效能,为打造和提升国际化的民族信息安全产业领军品牌而不懈努力。
关于我们
启明星辰安全应急响应中心主要针对重要安全漏洞的预警、跟踪和分享全球最新的威胁情报和安全报告。
关注以下公众号,获取全球最新安全资讯:

Spring Framework远程代码执行漏洞(CVE-2022-22965)

原文始发于微信公众号(维他命安全):【漏洞通告】Spring Framework远程代码执行漏洞(CVE-2022-22965)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月24日12:59:51
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Spring Framework远程代码执行漏洞(CVE-2022-22965)https://cn-sec.com/archives/882363.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息