Spring爆出“核彈”級高危漏洞

youbingke發表於2022-04-06

Spring官方日前在github上更新了一條可能導致命令執行漏洞的修復程式碼,該漏洞目前在網際網路中已被成功驗證。研究機構將該漏洞評價為高危級。對於應用JDK版本號為9及以上的企業,建議儘快開展Spring框架使用情況的排查與漏洞處置工作。

漏洞描述

由於歷史漏洞修復程式碼存在缺陷,在JDK 9及以上版本環境下,遠端攻擊者可藉助某些中介軟體構造資料包修改日誌檔案,從而實現遠端程式碼執行,影響範圍為Spring Framework 全版本及引用Spring Framework的產品。

漏洞詳情

  • 漏洞名稱:Spring框架JNDI注入漏洞
  • CVE編號:0day
  • 漏洞等級:高危
  • 漏洞描述:Spring框架JNDI注入漏洞
  • 影響版本:AII
  • EXP或POC連結:暫無

排查方法

-JDK版本號排查:

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

-Spring框架使用情況排査:

如果業務系統專案以war包形式部署或者以jar包形式直接獨立執行,按照如下的步驟進行判斷:

1)將包檔案的字尾修改成zip,解壓zip檔案。

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

3)如果spring-beans-*.jar檔案不存在,則在解壓縮目錄下搜尋
CachedintrospectionResults.class檔案是否存在,如存在則說明業務系統使用了Spring框架進行開發。

漏洞修復方案

官方暫未釋出新版本,可採用以下臨時方案進行防護

1)如使用者有自建WAF防護:可對"class.*Class.***.class.***Class.*”等字串的規則過濾,並在部署過濾規則後,對業務執行情況進行測試,避免產生額外影響,如已使用了雲盾WAF可忽略此步驟。

2)在應用中全域性搜尋@InitBinder註解,檢視方法體內是否呼叫
dataBinder.setDisallowedFields方法,如果發現此程式碼片段的引入,則在原來的黑名單中,新增("class.*"Class.*"*.class.***.Clas,.*),

注:如果此程式碼片段使用較多需要每個地方都追加。

3)在應用系統的專案包下新建以下全域性類,並保證這個類被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{@InitBinderpublic void setAllowedFields(webdataBinder dataBinder){
String[]abd=new string[]{"class.*","Class.*","*.class.*","*.Class.*"};
dataBinder.setDisallowedFields(abd);
}
}


雲盾WAF防護

1.中科三方WAF防護系統可有效防護Spring框架JNDI注入漏洞;

2.尚未接入的域名,建議儘早接入中科三方雲盾,進行相關漏洞的防護;

3.已接入的域名,WAF防護模式保持為攔截模式及以上即可。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69996004/viewspace-2885841/,如需轉載,請註明出處,否則將追究法律責任。

相關文章