【漏洞通告】Spring Framework遠程代碼執行漏洞(CVE-2022-22965)

發布時間 2022-03-31

0x00 漏洞概述

CVE   ID

CVE-2022-22965

時    間

2022-03-31

類    型

RCE

等    級

嚴重

遠程利用

影響范圍


攻擊復雜度

用戶交互

PoC/EXP

已公開

在野利用


 

0x01 漏洞詳情

Spring Framework 是一個開源的輕量級J2EE應用程序開發框架。

3月31日,VMware發布安全公告,修復了Spring Framework中的遠程代碼執行漏洞(CVE-2022-22965)。在 JDK 9 及以上版本環境下,可以利用此漏洞在未授權的情況下在目標系統上寫入惡意程序從而遠程執行任意代碼。

該漏洞影響了在JDK 9+上運行的Spring框架或其衍生框架構建的網站或應用,目前官方已在Spring Framework 5.3.18+和5.2.20+中修復了此漏洞。鑒于此漏洞的PoC/EXP已公開,建議相關用戶盡快排查修復。

 

影響范圍

運行環境為JDK9及以上版本的:

Spring Framework 5.3.0 -5.3.17

Spring Framework 5.2.0 - 5.2.19

以及其它舊版的、不受支持的版本。


0x02 安全建議

通用修復

目前官方已經修復了此漏洞,受影響用戶可以升級更新到Spring Framework 5.3.18或5.2.20。

下載鏈接:

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

 

漏洞排查

當同時滿足以下條件時,表明可能受此漏洞影響:

l  JDK版本 >= 9;

l  使用Spring框架或衍生框架,當前使用了Tomcat中間件(目前公開的漏洞利用代碼只針對Tomcat中間件,但不排除存在其它風險)。

 

排查方法

l  JDK版本號排查

執行“java -version"命令查看JDK版本,如果版本號小于等于8,則不受此漏洞影響。

l  Spring框架使用情況排査

1.如果業務系統項目以war包形式部署,按照如下的步驟進行判斷:

解壓war包:將war文件的后級修改成 .zip文件;

在解壓縮目錄下搜索是否存在spring-beans-*.jar格式的文件(例如spring-beans-5.3.16.jar),如存在則說明業務系統使用了 Spring框架進行開發;

如果spring-beans-*.jar文件不存在,則在解壓縮目錄下搜索CachedlntrospectionResults.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框架進行開發。

 

臨時措施

需同時按以下兩個步驟進行漏洞的臨時修復:

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;

@ControllerAdvice

@Order(10000)

public class GlobalControllerAdvicc{

@InitBinder

public void setAllowedFields(webdataBinder dataBinder){

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

}

}

 

0x03 參考鏈接

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

https://tanzu.vmware.com/security/cve-2022-22965

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

 

0x04 版本信息

版本

日期

修改內容

V1.0

2022-03-31

首次發布

 

0x05 附錄

公司簡介

啟明星辰公司成立于1996年,并于2010年6月23日在深交所中小板正式掛牌上市,是國內極具實力的、擁有完全自主知識產權的網絡安全產品、可信安全管理平臺、安全服務與解決方案的綜合提供商。

公司總部位于北京市中關村軟件園,在全國各省、市、自治區設有分支機構,擁有覆蓋全國的渠道體系和技術支持中心,并在北京、上海、成都、廣州、長沙、杭州等多地設有研發中心。

多年來,啟明星辰致力于提供具有國際競爭力的自主創新的安全產品和最佳實踐服務,幫助客戶全面提升其IT基礎設施的安全性和生產效能,為打造和提升國際化的民族信息安全產業領軍品牌而不懈努力。


關于我們

啟明星辰安全應急響應中心主要針對重要安全漏洞的預警、跟蹤和分享全球最新的威脅情報和安全報告。

關注以下公眾號,獲取全球最新安全資訊:

image.png