补丁发布!Spring Framework 远程代码执行漏洞

VSole2022-03-31 20:56:43

0x01事件概述

360漏洞云近日监测到Spring框架中存在一个严重的远程代码执行漏洞,该漏洞影响Jdk 9.0以上版本的Spring框架及其衍生框架,包括但不限于Spring Cloud、Spring Boot等。此漏洞利用方式简单,危害严重,Spring官方已针对此漏洞发布新版本,建议用户尽快升级版本或采取其他防护措施,避免受到该漏洞的攻击。

漏洞细节

漏洞POC

漏洞EXP

在野利用

公开

公开

公开

存在

0x02漏洞描述

Spring框架(Framework)是一个开源的轻量级J2EE应用程序开发框架,提供了IOC、AOP及MVC等功能,解决了程序人员在开发中遇到的常见问题,提高了应用程序开发便捷度和软件系统构建效率。     

Spring框架或其衍生框存在一个严重的远程代码执行漏洞,由于Spring框架存在处理流程缺陷,攻击者可在远程条件下,实现对目标主机的后门文件写入和配置修改,继而通过后门文件访问获得目标主机权限。使用Spring框架或衍生框架构建网站等应用,且同时使用JDK版本在9及以上版本的,易受此漏洞攻击影响。

经 360 漏洞云安全专家研判,Spring是当今使用最为广泛的 J2EE 框架Spring 及其衍生框架的全球部署数量超千万,排名靠前的国家为中国和美国。受漏洞影响的是 Spring Framework,任何引用Spring Framework的框架均受此漏洞影响。包括但不限于 Spring Boot、Spring Cloud、Spring Data、Spring Security等。这些框架的用户涵盖了政府、银行、医院、学校、电商等众多部门和行业。由于此漏洞利用方式简单,受漏洞影响的服务发布广泛,漏洞影响极其严重。

Spring Framework 远程代码执行漏洞

漏洞编号

CVE-2022-22965

漏洞类型

远程代码执行

漏洞等级

严重(10.0)

公开状态

已公开

在野利用

存在

漏洞描述

Spring Framework存在远程代码执行漏洞,在 JDK 9 及以上版本环境下,远程攻击者可利用该漏洞写入恶意代码导致远程代码执行漏洞。引用Spring框架的Spring衍生框架均受此漏洞影响。

0x03影响版本

  • Spring Framework 5.3.X < 5.3.18
  • Spring Framework 5.2.X < 5.2.2 

且所在运行环境为JDK9及以上版本

0x04排查方法

  1. JDK 版本号排查

在业务系统的运行服务器上,执行“java -version”命令查看运 行的 JDK 版本,如果版本号小于等于 8,则不受漏洞影响。

  1. 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 框架进行开发。

0x05漏洞复现

2022年3月30日,360漏洞云安全专家已第一时间复现上述漏洞,演示如下:

CVE-2021-22965

完整POC代码已在360漏洞云情报平台(https://loudongyun.360.cn/)发布,360漏洞云情报平台用户可通过平台下载进行安全自检。

0x06修复建议

官方修复建议

目前,Spring官方已经在5.2.205.3.18版本修复上述漏洞,用户请及时升级到安全版本。

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

临时修复建议

  1. 使用WAF缓解

用户请根据实际部署业务的流量情况,在WAF或其他网络防护设备上实现对"classLoader.","class.module.*","class.","Class.",".class.",".Class.", 等字符串的规则过滤,请注意其中流量特征 "class.module.*" 对大小写不敏感。用户注意在部署规则后,对业务允许情况进行测试,避免产生额外影响。

  1. 其他临时缓解措施

全局搜索 @InitBinder注解,判断方法体内是否有dataBinder.setDisallowedFields方法,如果有使用则在原来的黑名单中添加:{"class.","Class.",".class.",".Class."} (注:如果此代码片段使用较多,需要每个地方都追加)

在应用系统的项目包下新建以下全局类,并保证这个类被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;@ControllerAdvice@Order(10000)public class GlobalControllerAdvice{   @InitBinder    public void setAllowedFields(webdataBinder dataBinder){    String[]abd=new string[]{"class.","Class.",".class.",".Class."};    dataBinder.setDisallowedFields(abd);    }}

与此同时,请做好资产自查以及预防工作,以免遭受黑客攻击。

远程代码执行漏洞spring框架
本作品采用《CC 协议》,转载必须注明作者和本文链接
Spring framework 是Spring 里面的一个基础开源框架,其目的是用于简化 Java 企业级应用的开发难度和开发周期,2022年3月31日,VMware Tanzu发布漏洞报告,Spring Framework存在远程代码执行漏洞,在 JDK 9+ 上运行的 Spring MVC 或 Spring WebFlux 应用程序可能容易受到通过数据绑定的远程代码执行 (RCE) 的攻击
360漏洞云近日监测到Spring框架中存在一个严重的远程代码执行漏洞,该漏洞影响Jdk 9.0以上版本的Spring框架及其衍生框架,包括但不限于Spring Cloud、Spring Boot等。
虽说是 Spring 框架漏洞,但以下包含并不仅 Spring Framework,Spring Boot,还有 Spring Cloud,Spring Data,Spring Security 等。
虽说是 Spring 框架漏洞,但以下包含并不仅 Spring Framework,Spring Boot,还有 Spring Cloud,Spring Data,Spring Security 等。 CVE-2010-1622 Spring Framework class.classLoader 类远程代码执行 影响版本:SpringSource Spring Framework 3.0.0
Spring框架是一个开放源代码的J2EE应用程序框架,是针对bean的生命周期进行管理的轻量级容器。Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、Tapestry等众多Web框架组合使用,并且可以与 Swing等桌面应用程序AP组合。 Spring框架主要由七部分组成,分别是 Spring Core、 Spring AOP、 Spring ORM、 Spring
Spring Framework、5.0.5 之前的 5.0.x 版本和 4.3.16 之前的 4.3.x 版本以及不支持的旧版本允许应用程序通过spring-messaging模块通过简单的内存 STOMP 代理通过 WebSocket 端点公开 STOMP 。恶意用户(或攻击者)可以向代理发送可能导致远程代码执行攻击的消息。
Spring的英文翻译为春天,可以说是给Java程序员带来了春天,因为它极大的简化了开发。
Web安全常见漏洞修复建议
VSole
网络安全专家