警惕!Spring Framework远程代码执行漏洞修复及防护建议

admin 2022年4月1日23:34:42评论133 views字数 2267阅读7分33秒阅读模式

漏洞描述

近日,亚信安全CERT监控到Spring Framework存在远程代码执行漏洞(CVE-2022-22965),在JDK9及以上版本前提下,结合Tomcat进行Spring项目部署的实际环境中,远程攻击者可利用该漏洞生成恶意文件导致远程代码执行。


目前已经发布修复版本:Spring Framework 5.3.18 和 5.2.20 ,鉴于该漏洞受影响面广大,漏洞细节以及对应POC、EXP已公开,亚信安全CERT建议使用Spring Framework的用户尽快采取相关措施。


Spring是目前世界上最受欢迎的Java EE轻量级开源框架,是Java世界最为成功的框架之一。专注于简化Java企业级应用的开发难度、缩短开发周期。


漏洞编号


CVE-2022-22965


漏洞等级


高危


漏洞状态


漏洞细节

漏洞PoC

漏洞EXP

在野利用

已公开

已发现

已发现

已发现


受影响的版本


满足下列4个组合条件:

  • JDK >= 9

  • 使用Tomcat部署了Spring项目或Spring衍生项目

    使用@RequestMapping注释和使用POJO(Plain Old Java Object)参数的组件

  • Spring Framework版本小于5.3.18(5.3x系列)或5.2.20(5.2x系列)


亚信安全产品防护


亚信安全信桅深度威胁发现设备【TDA】,信舷防毒墙【AISEDGE】,信舱云主机安全【DeepSecurity】已经支持对该漏洞的检测,请用户及时更新规则,以形成安全产品检测和防护能力。


 产品

版本号

规则包

版本

规则

TDA

6.0及以上版本

1.0.0.105

103044098

103044099

AISEDGE

7.0.3.1

1.0.0.031

103044098

103044099

DS

所有版本

-

1011372-Spring Framework "Spring4Shell" Remote Code Execution Vulnerability (CVE-2022-22965) 


漏洞复现


亚信安全CERT安全专家已第一时间构造PoC,并复现成功。


警惕!Spring Framework远程代码执行漏洞修复及防护建议


修复建议


目前,Spring官方已发布漏洞修复版本,请用户及时更新至最新版本。


  • Spring Framework 5.3.x版本下载地址:https://github.com/spring-projects/spring-framework/releases/tag/v5.3.18

  • Spring Framework 5.2.x下载地址:https://github.com/spring-projects/spring-framework/releases/tag/v5.2.20.RELEASE


在WAF等网络防护设备上,根据实际部署业务的流量情况,实现对对"class.*","Class.*","*.class.*","*.Class.*"等字符串的规则过滤,并在部署规则后,对业务允许情况进行测试,避免产生额外影响。


临时缓解措施


※ 全局搜索@InitBinder注解,判断方法体内是否有dataBinder.setDisallowedFields方法,如果有使用则在原来的黑名单中添加:{"class.*","Class.*","*.class.*","*.Class.*"}


※ 在应用系统的项目包下新建以下全局类,并保证这个类被Spring 加载到(推荐在Controller 所在的包中添加)。完成类添加后,需对项目进行重新编译打包和功能验证测试。并重新发布项目。


Java

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;

 

@ControllerAdvice

@Order(10000)

public class GlobalControllerAdvice{

     @InitBinder

     public void setAllowedFields(webdataBinder dataBinder){

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

         dataBinder.setDisallowedFields(abd);

     }

}


参考链接


  • https://github.com/spring-projects/spring-framework/commit/7f7fb58dd0dae86d22268a4b59ac7c72a6c22529

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

  • https://github.com/spring-projects/spring-boot/releases/tag/v2.6.6

  • https://github.com/spring-projects/spring-boot/releases/tag/v2.5.12

原文始发于微信公众号(亚信安全服务):警惕!Spring Framework远程代码执行漏洞修复及防护建议

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月1日23:34:42
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   警惕!Spring Framework远程代码执行漏洞修复及防护建议https://cn-sec.com/archives/862714.html

发表评论

匿名网友 填写信息