0x00 背景介绍
3月29日,天融信阿尔法实验室监测到互联网上传播有SpringFramework高危远程代码执行漏洞,阿尔法实验室第一时间启动应急响应,根据网络中传播的信息整理出漏洞poc,并第一时间进行了漏洞复现。
0x01 漏洞描述
该漏洞是SpringFramework数据绑定的一个漏洞,如果后台方法中接受的参数为非基础类型,Spring会根据前端传入的请求正文中的参数的key值来查询与其名称所对应的getter和setter方法,攻击者利用这一特性修改了Tomcat的一个用于日志记录的类的属性,进而当Tomcat在进行写日志操作的时候,将攻击者传递的恶意代码写入指定目录的指定文件中。
0x03 漏洞复现
0x02 漏洞编号
CVE-2022-22965
0x03 漏洞等级
严重
0x04 影响版本
Spring Framework 5.3.X < 5.3.18
Spring Framework 5.2.X < 5.2.20
以及任何引用SpringFramework的衍生产品
0x05 修复建议
Spring官方目前已发布安全版本,建议用户尽快更新至安全版本,下载链接如下
https://github.com/spring-projects/spring-framework
0x06 临时修复建议
(一)WAF防护
在WAF等网络防护设备上,根据实际部署业务的流量情况,实现对class.*, Class.*,*.class.*,*.Class.* 等字符串的规则过滤,并在部署过滤规则后,对业务运行情况进行测试,避免产生额外影响。
(二)临时修复措施
需同时按以下两个步骤进行漏洞的临时修复:
1、在应用中全局搜索@InitBinder注解,看看方法体内是否调用dataBinder.setDisallowedFields方法,如果发现此代码片段的引入,则在原来的黑名单中,添加{"class.*","Class.*","*.class.*","*.Class.*"}。(注:如果此代码片段使用较多,需要每个地方都追加)
2、在用系统的项目包下新建以下全局类,并保证这个类被Spring 加载到(推荐在Controller所在的包中添加)。完成类添加后,需对项目进行重新编译打包和功能验证测试,并重新发布项目。
import org.springframework.core.annotation.Order;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.InitBinder;
public class GlobalControllerAdvicc{
public void setAllowedFields(webdataBinder dataBinder){
String[]abd=new string[]{"class.*","Class.*","*.class.*","*.Class.*"}; dataBinder.setDisallowedFields(abd);
}
}
(三)天融信官方临时修复建议
天融信WEB应用安全防护系统(TopWAF产品)可以防御该漏洞:
规则ID:1030006;
规则库版本号:waf-v2022.03.28及近一年内的历史版本
0x06 声明
天融信阿尔法实验室拥有对此公告的修改和解释权,如欲转载,必须保证此公告的完整性。由于传播、利用此公告而造成的任何后果,均由使用者本人负责,天融信阿尔法实验室不为此承担任何责任。
天融信阿尔法实验室成立于2011年,一直以来,阿尔法实验室秉承“攻防一体”的理念,汇聚众多专业技术研究人员,从事攻防技术研究,在安全领域前瞻性技术研究方向上不断前行。作为天融信的安全产品和服务支撑团队,阿尔法实验室精湛的专业技术水平、丰富的排异经验,为天融信产品的研发和升级、承担国家重大安全项目和客户服务提供强有力的技术支撑。
天融信
阿尔法实验室
长按二维码关注我们
原文始发于微信公众号(天融信阿尔法实验室):【风险提示】天融信关于SpringFramework 远程代码执行漏洞的风险提示
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论