Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。
近日,迪普安全研究院团队监测到Spring官方的github上更新了一条修复代码,涉及到Spring框架远程命令执行漏洞,漏洞编号CVE-2022-22965,目前相关POC已在网络中传播。由于因修复核弹级漏洞log4j2,大批企业都升级了JDK版本,而本次漏洞恰好需要满足JDK 9+版本,因此该漏洞潜在危害严重,迪普科技提醒广大用户,尽快排查漏洞情况,以降低安全风险。
高危
该漏洞是由于Spring框架存在处理流程缺陷导致的,攻击者通过修改Tomcat的一个用于日志记录的类的属性,导致当Tomcat在进行写日志操作的时候,会将攻击者上传的恶意代码写入指定位置。继而通过写入的恶意代码访问并获取目标主机权限。
Spring Framework 5.3.X < 5.3.18
Spring Framework 5.2.X < 5.2.20
所有引用SpringFramework的衍生产品
(一). JDK版本号排查
在业务系统的运行服务器上,执行“java-version”命令查看运行的JDK版本,如果版本号小于等于8,则不受漏洞影响。
(二). Spring框架使用情况排查
1.如果业务系统项目以war包形式部署,按照如下步骤进行判断。
⑴解压war包:将war文件的后缀修改成.zip,解压zip文件。
⑵在解压缩目录下搜索是否存在spring-beans-*.jar格式的jar文件(例如spring-beans-5.3.16.jar),如存在则说明业务系统使用了spring框架进行开发。
⑶如果spring-beans-*.jar文件不存在,则在解压缩目录下搜索CachedIntrospectionResuLts.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框架进行开发。
(三). 漏洞确认
在完成以上两个步骤排查后,同时满足以下两个条件可确定受此漏洞影响:
⑴JDK版本号在9及以上;
⑵使用了spring框架或衍生框架。
官方解决方案
(一)官方解决方案
Spring官方目前已发布安全版本,建议用户尽快更新至安全版本,下载链接如下:
https://github.com/spring-projects/spring-framework
(二)临时解决方案
1、网络防护设备临时解决方案
在WAF等网络防护设备上,根据实际部署业务的流量情况,实现对“class.*”“Class.*”“*.class.*”“*.Class.*”等字符串的规则过滤。
临时修复方案
需同时按以下两个步骤进行漏洞的临时修复:
(一)在应用中全局搜索@InitBinder注解,看看方法体内是否调用dataBinder.setDisallowedFields方法,如果发现此代码片段的引入,则在原来的黑名单中,添加{"class.*","Class. *","*. class.*", "*.Class.*"}。
注:如果此代码片段使用较多,需要每个地方都追加。
(二)在应用系统的项目包下新建以下全局类,并保证这个类被Spring 加载到(推荐在Controller 所在的包中添加).完成类添加后,需对项目进行重新编译打包和功能验证测试。并重新发布项目。
import org.springframework.core.annotation.Order;import org.springframework.web.bind.WebDataBinder;
importorg.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.InitBinder;
public class GlobalControllerAdvice{
public void setAllowedFields(webdataBinder dataBinder){
String[]abd=new string[]{"class.*","Class.*","*.class.*","*.Class.*"};
dataBinder.setDisallowedFields(abd);
}
}
迪普科技解决方案
迪普科技安全研究院在监测到Spring框架远程命令执行漏洞后,迅速采取了应急措施。
1
使用迪普慧眼检测平台检测现网环境中是否存在Spring框架远程命令执行漏洞。
2
使用迪普态势感知平台检测现网环境中是否存在Spring框架远程命令执行漏洞攻击行为。
◆ 态势感知特征库版本:2022040101
3
迪普科技安全服务团队可协助客户完成现网安全风险评估,针对网络安全入侵事件,提供快速应急响应支撑服务以及专业的安全建设建议。
4
DPtech IPS2000、FW1000将在以下特征库版本中对Spring框架远程命令执行漏洞进行有效防护。
◆ 产品系列:IPS2000,FW1000
◆ 漏洞库版本:IPS-R3.1.245
5
DPtech WAF3000将在以下特征库版本中对Spring框架远程命令执行漏洞进行有效防护。
◆ 产品系列:WAF3000
◆ 漏洞库版本:WAF-R3.1.125、WAF-R2.1.125
联系我们
迪普科技正在全力跟踪相关漏洞的最新进展,有疑问的客户也可联系迪普科技当地办事处售后人员或拨打客户服务热线电话(400-6100-598),进一步了解相关情况。
原文始发于微信公众号(迪普科技):【漏洞风险通告】Java Spring框架远程代码执行漏洞(CVE-2022-22965)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论