Spring Framework 遠端命令執行漏洞(CVE-2022-22965)
Spring Framework 遠端命令執行漏洞
(CVE-2022-22965)
近日,Spring 官方 GitHub issue中提到了關於 Spring Core 的遠端命令執行漏洞,該漏洞廣泛存在於Spring 框架以及衍生的框架中。
漏洞形成原因:
Spring core是Spring系列產品中用來負責發現、建立並處理bean之間的關係的一個工具包,是一個包含Spring框架基本的核心工具包,Spring其他元件都要使用到這個包。
未經身份驗證的攻擊者可以使用此漏洞進行遠端任意程式碼執行。 該漏洞廣泛存在於Spring 框架以及衍生的框架中,JDK 9.0及以上版本會受到影響。使用舊JDK版本的產品不受影響。建議存在該漏洞的企業在防火牆處阻止帶有特殊字串的請求,以免受到該漏洞的攻擊。
影響版本限制:
使用Apache Tomcat作為Servlet容器
使用傳統WAR部署
基於spring-webmvc或spring-webflux
Spring框架版本為5.3.0至5.3.17,5.2.0至5.2.19,或更早版本
JDK 9.0及以上版本會受到影響
FOFA搜尋:
app="APACHE-Tomcat" || app="vmware-SpringBoot-framework" || app="vmware-SpringBoot-framework" || app="vmware-Spring-Batch" || app="vmware-Spring-framework" || app="vmware-Spring-Security"
漏洞復現:
首先搭建好復現靶場
通過exploit工具直接命令執行
工具來源於Github
漏洞修復:
升級Spring Framework 版本
Spring Framework == 5.3.18
Spring Framework == 5.2.20
臨時防禦方案:
1、 WAF防禦。
可以在WAF中新增以下規則對特殊輸入的字串進行過濾:
Class.*
class.*
*.class.*
*Class.*
2、通過黑名單策略進行防護。
您可在受影響產品程式碼中搜索@InitBinder註解,判斷方法體內是否有dataBinder.serDisallowerFields方法,若發現存在該方法,則在黑名單中新增如下過濾規則:
Class.*
class.*
*.class.*
*Class.*