近日,安全狗应急响应中心监测到Spring Framework存在远程代码执行漏洞。漏洞编号CVE-2022-22965。
漏洞描述
Spring Framework是一个开源应用框架,旨在降低应用程序开发的复杂度。它是轻量级、松散耦合的。它具有分层体系结构,允许用户选择组件,同时还为 J2EE 应用程序开发提供了一个有凝聚力的框架。
使用Spring Framework在 JDK 9 及以上版本环境下处理恶意数据时,可能会造成远程代码执行。此漏洞POC、技术细节及EXP已公开,经过安全狗研究人员研判,此漏洞POC有效。
安全狗复现
安全狗复现效果如下:
安全通告信息
漏洞名称 | Spring框架远程代码执行漏洞 |
漏洞影响版本 | Spring Framework < 5.3.18 Spring Framework < 5.2.20 且其衍生产品 JDK ≥ 9 JRE ≥ 9 |
漏洞危害等级 | 高危 |
厂商是否已发布漏洞补丁 | 是 |
版本更新地址 | https://spring.io/blog/2022/03/31/spring-framework-rce-early-announcement |
安全狗总预警期数 | 214 |
发布者 | 安全狗海青实验室 |
处置措施
【安全版本】
Spring Framework == 5.3.18
Spring Framework == 5.2.20
目前,Spring官方已发布漏洞修复版本,请用户及时更新至最新版本。
https://github.com/spring-projects/spring-framework/tags
【漏洞排查】
JDK版本号排查:
在业务系统的运行服务器上,Windows操作系统可在运行中执行cmd打开命令行,Linux操作系统可打开控制台窗口。
执行“java -version”命令查看运行的JDK版本,如果版本号小于9,则不受此漏洞影响。
Spring框架使用情况排査:
1、如果业务系统项目以war包形式部署,按照如下的步骤进行判断。
1)解压war包:将war文件的后级修改成 .zip文件。
2)在解压缩目录下搜索是否存在spring-beans-*.jar格式的文件(例如spring-beans-5.3.16.jar),如存在则说明业务系统使用了 Spring框架进行开发。
3)如果spring-beans-*.jar文件不存在,则在解压缩目录下搜索CachedlntrospectionResults.class文件是否存在,如存在则说明业务系统使用了 Spring框架进行开发。
2、如果业务系统项目以jar包形式独立运行,按照如下的步骤进行判断。
1)解压jar包:将jar文件的后缀修改成zip,解压zip 文件。
2)在解压缩目录下搜索是否存在spring-beans-*.jar格式的jar文件(例如spring-beans-5.3.16.jar),如存在则说明业务系统使用了 Spring框架进行开发。
3)如果spring-beans-*.jar文件不存在,则在解压缩目录下搜索CachedIntrospectionResults.class文件是否存在,如果存在则说明业务系统使用了 Spring框架进行开发。
【临时缓解方案】
用户可通过安全狗云御WAF等网络防护设备上,根据实际部署业务的流量情况,实现对“class.* ” ,“Class.*”,“*.class.*”,“*.Class.*”等字符串的规则过滤,并在部署过滤规则后,对业务运行情况进行测试,避免产生额外影响。
注意:其中流量特征“class.*”对大小写不敏感。
参考链接
https://github.com/spring-projects/spring-framework
https://spring.io/blog/2022/03/31/spring-framework-rce-early-announcement