400电话
在线咨询
微信咨询
咨询时间: 9:30-18:30
400-998-3555

漏洞通告 | Spring Framework远程代码执行漏洞,火绒安全发布检测工具

  • 作者:火绒安全

  • 发布时间:2022-04-02

  • 阅读量:2554

 

近日,Spring官方披露了一个远程命令执行漏洞(CVE-2022-22965),其框架存在处理流程缺陷,攻击者可远程实现对目标主机的后门文件写入和配置修改,继而通过后门文件访问获得目标主机权限。任何引用Spring Framework的框架均受此漏洞影响,包括但不限于Spring Boot

 

目前该漏洞的POCEXP等相关代码均已公开,极易遭到利用,危害较大。且由于 Spring MVC 框架在世界范围内应用广泛,火绒工程师提醒用户,使用火绒“CVE-2022-22965 (Spring Boot)漏洞版本检测工具”排查有关系统中是否使用了漏洞版本的Spring Boot组件,如存在相关问题,请尽快升级到最新版本进行防护。

 

 检测工具下载地址:

https://bbs.huorong.cn/thread-101429-1-1.html

 

 

Spring是一个比 J2EE 开发更为简单高效的轻量级框架。该框架提供了一个更完善的开发环境,降低了开发者的学习成本,更多的强调了面向对象的编程设计,并降低了接口使用的复杂度。

 

漏洞描述

 

官方发布CVE编号为CVE-2022-22965确认该漏洞。在后续的分析中发现该漏洞其实是CVE-2010-1622漏洞的绕过。CVE-2010-1622官方的修复方式是拦截Class.getClassLoader的访问,而在java 9以上的版本中却可以通过Class.getmodule来绕过拦截,于是就有了现在的漏洞。

 

影响范围

 

若满足如下两个条件则确定受到漏洞影响:

(1)使用JDK>=9

(2)Spring开发或衍生框架开发(存在Spring-bean*.jar

Spring-Framework < v5.3.18

Spring-Framework < v5.2.20.RELEASE

 

 注意:此次受漏洞影响的是Spring Framework,任何引用Spring Framework的框架均受此漏洞影响,包括但不限于Spring Boot等。同时,使用Spring框架或衍生框架所构建的网站等应用,且使用JDK版本在9及以上版本的,皆易受此漏洞攻击影响。

 

Spring Boot漏洞版本检测工具使用方法

 

Linux环境

在具有webapps目录访问权限的用户登录情况下,在bash中运行 CVE-2022-22965_detector.sh,并在提示位置出输入webapps目录位置。工具可以帮助确认本地网站应用中是否包含、使用了漏洞版本Spring Boot。如果组件存在漏洞,可以通过更新pom.xml中的Spring Boot版本并重新打包、部署以解决此问题(最新版本为2.5.122.6.6)。检测到漏洞版本Spring Boot时,相关显示结果:

 

文本描述已自动生成

 

当未检测到漏洞版本Spring Boot时,相关显示结果:

 

2.png

 

 

 

Windows环境

在具有webapps目录访问权限的用户登录情况下,在CMD窗口中运行CVE-2022-22965-detector.exe,调用时需传入webapps全路径。工具可以帮助确认本地网站应用中是否包含、使用了漏洞版本Spring Boot。如果组件存在漏洞,可以通过更新pom.xml中的Spring Boot版本并重新打包、部署以解决此问题(最新版本为2.5.122.6.6)。检测到漏洞版本Spring Boot时,相关显示结果:

 

文本描述已自动生成

当未检测到漏洞版本Spring Boot时,相关显示结果:

 

4.png

 

 

解决方案及缓解措施

 

1.官方方案

 

升级 Spring Framework 到最新版本,链接如下:

https://github.com/spring-projects/spring-framework/tags

 

2.缓解措施

方式一:

升级Apache Tomcat组件到10.0.209.0.628.5.78

 

方式二:

更改项目源代码,通过全局@InitBinder 注解设置禁止WebDataBinder绑定特定字段

 

@ControllerAdvice

@Order(Ordered.LOWEST_PRECEDENCE)

public class BinderControllerAdvice {

 

    @InitBinder

    public void setAllowedFields(WebDataBinder dataBinder) {

         String[] denylist = new String[]{"class.*", "Class.*", "*.class.*", "*.Class.*"};

         dataBinder.setDisallowedFields(denylist);

    }

 

}

 

 

 

火绒安全软件随后也将升级产品相关防御模块,防御通过该漏洞产生的威胁。用户可先使用火绒安全“CVE-2022-22965 (Spring Boot)漏洞版本检测工具”进行业务风险自查并进行升级处置。

 

 

 

参考链接:

https://spring.io/blog/2022/03/31/spring-framework-rce-early-announcement

 

 

安全无忧,一键开启

全面提升您的系统防护