2022年3月31日,Spring官方發(fā)布安全公告,披露CVE-2022-22965 Spring Framework 遠程代碼執(zhí)行漏洞。由于Spring框架存在處理流程缺陷,攻擊者可在遠程條件下,實現(xiàn)對目標(biāo)主機的后門文件寫入和配置修改,繼而通過后門文件訪問獲得目標(biāo)主機權(quán)限。使用Spring框架或衍生框架構(gòu)建網(wǎng)站等應(yīng)用,且同時使用JDK版本在9及以上版本的,易受此漏洞攻擊影響。
截止2022年3月31日,官方已發(fā)布安全版本5.3.18/5.2.20修復(fù)該漏洞。
(一) WAF 防護
在 WAF 等網(wǎng)絡(luò)防護設(shè)備上,根據(jù)實際部署業(yè)務(wù)的流量情況,實現(xiàn)對"class.*","Class.*",".class.*","*.Class.*"等字符串的規(guī)則過濾,并在部署過濾規(guī)則后,對業(yè)務(wù)運行情況進行測試,避免產(chǎn)生額外影響。
(二) 臨時修復(fù)措施
可按照以下措施進行緩解,兩步需同時進行,且使用時請根據(jù)自身業(yè)務(wù)情況進行調(diào)整:
1、在應(yīng)用中全局搜索@InitBinder注解,看看方法體內(nèi)是否調(diào)用dataBinder.setDisallowedFields方法,如果發(fā)現(xiàn)此代碼片段的引入,則在原來的黑名單中,添加{"class.*","Class. *","*. class.*", "*.Class.*"}。 (注:如果此代碼片段使用較多,需要每個地方都追加)
2、在應(yīng)用系統(tǒng)的項目包下新建以下全局類,并保證這個類被Spring 加載到(推薦在Controller 所在的包中添加).完成類添加后,需對項目進行重新編譯打包和功能驗證測試。并重新發(fā)布項目。
```
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);
}
}
```
(三) 升級官方安全版本 >= 5.3.18/5.2.20
**參考來源**
https://avd.aliyun.com/detail?id=AVD-2022-1124599
https://mp.weixin.qq.com/s/G1z7mydl4nc9SxcZjwUQwg
蘇ICP備2021041225號 南京國云電力有限公司