1
漏洞简介
近日,某团队监测到一则 Spring Framework 组件存在远程代码执行漏洞的信息,漏洞威胁等级:严重。
该漏洞是由于 Spring Framework 未对传输的数据进行有效的验证,攻击者可利用该漏洞在未授权的情况下,构造恶意数据进行远程代码执行攻击,最终获取服务器权限。
只要同时满足以下条件的应用系统均遭受影响:
1、使用了jdk 9及以上
2、使用tomcat部署了spring项目
3、Spring项目中web接口参数使用了复杂对象
2
漏洞概述
CVE: CVE-2022-22965
简述:Spring 是一个支持快速开发 Java EE 应用程序的框架。它提供了一系列底层容器和基础设施,并可以和大量常用的开源框架无缝集成,可以说是开发 Java EE 应用程序的必备。该漏洞是由于 Spring Framework 未对传输的数据进行有效的验证,攻击者可利用该漏洞在未授权的情况下,构造恶意数据进行远程代码执行攻击,最终获取服务器权限。
关于 Spring RCE 0day 判断是否存在利用条件:
1、JDK 9 及以上
2、Spring 框架以及衍生的框架spring-beans-*.jar 文件 或者 存在CachedIntrospectionResults.class
3
影响版本
目前受影响的 Spring Framework 的版本:
Spring Framework 5.3.X < 5.3.18
Spring Framework 5.2.X < 5.2.20
注:其他 Spring Framework 旧版本同样会受到影响。
Spring Framework 官方提供
Spring Framework 5.3.18 和 Spring Framework 5.2.20两个安全版本(截止至3月31日)
4
解决方案
一、官方修复建议:
当前 Spring Framework 官方已发布最新版本,建议受影响的用户及时更新升级到最新版本。链接如下:
https://spring.io/blog/2022/03/31/spring-framework-rce-early-announcement
https://github.com/spring-projects/spring-framework/tags
注:Spring Framework 5.3.18和Spring Framework 5.2.20是 Spring 官方提供的两个安全版本(截止至3月31日)
二、临时修复建议:
该临时修复建议存在一定风险,建议用户可根据业务系统特性审慎选择采用临时修复方案:
需同时按以下两个步骤进行漏洞的临时修复:
1.在应用中全局搜索@InitBinder注解,看看方法体内是否调用dataBinder.setDisallowedFields 方法,如果发现此代码片段的引入,则在原来的黑名单中,添加{"class.*","Class. *","*. class.*", "*.Class.*"}。(注:如果此代码片段使用较多,需要每个地方都追加)
2. 在应用系统的项目包下新建以下全局类,并保证这个类被 Spring 加载到(推荐在Controller 所在的包中添加).完成类添加后,需对项目进行重新编译打包和功能验证测试。并重新发布项目。
• 往期精选
下方点击关注发现更多精彩!