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