简述
近日,Spring官方通报了Spring相关框架中存在远程代码执行漏洞,官方发布了Spring Framework 5.3.18和5.2.20的补丁修复了该漏洞,且依赖 Spring Framework 5.3.18 的 Spring Boot 2.6.6 和 2.5.12 已经发布。
该漏洞会影响在 JDK 9+ 上运行的 Spring MVC 和 Spring WebFlux 应用程序。具体的利用需要应用程序作为 WAR 部署在 Tomcat 上运行。如果应用程序被部署为 Spring Boot 可执行 jar,即默认值,则它不易受到漏洞利用。
漏洞评级:严重
CVE编号:CVE-2022-22965
受影响版本:Spring Framework 版本 5.3.0 到 5.3.17、5.2.0 到 5.2.19 以及更早的版本
官方公布出的利用条件:
JDK版本:Jdk9+
Servlet容器:Apache Tomcat
部署方式:WAR部署
依赖项:spring-webmvc 或 spring-webflux 依赖项
漏洞版本:Spring Framework 版本 5.3.0 到 5.3.17、5.2.0 到 5.2.19 以及更早的版本
此漏洞可以通过使用一个简单的request就可以写入shell。攻击者可以利用该漏洞在服务器写入日志,写入shell后就可以实现远程代码执行。该漏洞POC很可能已经被扩散,有安全机构已经监测到该攻击行为。建议使用了Spring框架组件的客户尽快排查是否受漏洞影响,并采取措施防止漏洞攻击。
目前流传最广的POC中,payload包含以下特征:
漏洞排查
1. 目前项目使用的jdk版本排查,jdk版本好<=8,暂不受漏洞影响。
2. 检查是否使用了 sprig-beans-*.jar文件。
修复建议
官方修复建议:
目前官方已经发布补丁,可升级至安全版本(https://github.com/spring-projects/spring-framework/commit/002546b3e4b8d791ea6acccb81eb3168f51abb15)
临时修复建议:
使用waf防护的用户,根据业务实际部署情况,可以添加对”class.module.*”,”.getRuntime().”字符串添加规则过滤。在部署完毕后,要对规则测试,避免产生不必要影响。
在应用中全局搜索@InitBinder 注解,看方法体内是否调用dataBinder.setDisallowedFields方法,如果发现代码中有调用该方法,则在原来的黑名单中添加”class.module.*”。注意:如果此代码片段使用较多,需要每个地方都追加。
目前,该漏洞的poc及多种变种利用方式已经在网上传播。漏洞细节请参考官方漏洞公告。
Spring 官方漏洞公告(https://spring.io/blog/2022/03/31/spring-framework-rce-early-announcement)
发表评论
您还未登录,请先登录。
登录