时时博在线娱乐城-百家乐代理 -禁毒法规定娱乐场所应当建立什么制度?

網(wǎng)絡(luò)安全

關(guān)于Java Spring框架遠(yuǎn)程代碼執(zhí)行高危漏洞的緊急通告

2022-03-31

Spring是一款主流的Java EE輕量級(jí)開(kāi)源框架,面向服務(wù)器端開(kāi)發(fā)設(shè)計(jì)。近日,Spring框架被曝出RCE 0day漏洞,可導(dǎo)致遠(yuǎn)程代碼執(zhí)行 (RCE),使用JDK9及以上版本皆有可能受到影響,目前已經(jīng)有該漏洞的在野利用。由于該漏洞攻擊面較廣,潛在危害嚴(yán)重,提醒廣大用戶(hù)盡快排查漏洞情況,降低安全風(fēng)險(xiǎn)。


一.漏洞等級(jí)


高危。


二.受影響的版本


JDK 版本號(hào)9及以上,并且使用了Spring框架或衍生框架。


三.漏洞排查方案


(一)JDK版本號(hào)排查


在業(yè)務(wù)系統(tǒng)的運(yùn)行服務(wù)器上,執(zhí)行“java -version”命令查看運(yùn)行的JDK 版本,如果版本號(hào)小于等于8,則不受漏洞影響。


(二)Spring框架使用情況排查


1. 如果業(yè)務(wù)系統(tǒng)項(xiàng)目以war 包形式部署,按照如下步驟進(jìn)行判斷。


(1)解壓war 包:將war 文件的后綴修改成.zip ,解壓zip 文件。


(2)在解壓縮目錄下搜索是否存在spring-beans-*.jar 格式的jar 文件(例如spring-beans-5.3.16.jar),如存在則說(shuō)明業(yè)務(wù)系統(tǒng)使用了spring 框架進(jìn)行開(kāi)發(fā)。


(3)如果spring-beans-*.jar 文件不存在,則在解壓縮目錄下搜索CachedIntrospectionResuLts.class 文件是否存在,如存在則說(shuō)明業(yè)務(wù)系統(tǒng)使用了Spring 框架進(jìn)行開(kāi)發(fā)。


2.如果業(yè)務(wù)系統(tǒng)項(xiàng)目以jar 包形式直接獨(dú)立運(yùn)行,按照如下步驟進(jìn)行判斷。


(1)解壓jar 包:將jar 文件的后綴修改成.zip,解壓zip 文件。


(2)在解壓縮目錄下搜索是否存在spring-beans-*.jar 格式的jar 文件(例如spring-beans-5.3.16.jar),如存在則說(shuō)明業(yè)務(wù)系統(tǒng)使用了spring 框架進(jìn)行開(kāi)發(fā)。


(3)如果spring-beans-*.jar 文件不存在,則在解壓縮目錄下搜索CachedIntrospectionResuLts.class 文件是否存在,如存在則說(shuō)明業(yè)務(wù)系統(tǒng)使用了spring 框架進(jìn)行開(kāi)發(fā)。


3. 在完成以上兩個(gè)步驟排查后,同時(shí)滿(mǎn)足以下兩個(gè)條件可確定受此漏洞影響:


(1)JDK 版本號(hào)在9 及以上;


(2)使用了spring 框架或衍生框架。


四.解決方案:


目前,spring 官方已發(fā)布Spring Framework漏洞修復(fù)版本5.3.18和5.2.20,請(qǐng)按官方補(bǔ)丁修復(fù)漏洞。(參考鏈接:https://github.com/spring-projects/spring-framework; https://spring.io/blog/2022/03/31/spring-framework-rce-early-announcement)。


其他臨時(shí)修復(fù)方案


需同時(shí)按以下兩個(gè)步驟進(jìn)行漏洞的臨時(shí)修復(fù):


1. 在應(yīng)用中全局搜索@InitBinder 注解,看看方法體內(nèi)是否調(diào)用dataBinder.setDisallowedFields 方法,如果發(fā)現(xiàn)此代碼片段的引入,則在原來(lái)的黑名單中,添加 {class.*, Class. *, *. class.*, *.Class.*}。


注:如果此代碼片段使用較多,需要每個(gè)地方都追加。


2. 在應(yīng)用系統(tǒng)的項(xiàng)目包下新建以下全局類(lèi),并保證這個(gè)類(lèi)被Spring 加載(推薦在Controller 所在的包中添加)。完成類(lèi)添加后需對(duì)項(xiàng)目進(jìn)行重新編譯打包和功能驗(yàn)證測(cè)試,并重新發(fā)布項(xiàng)目。


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);


}


}