Spring4Shell CVE-2022-22965

[漏洞分析] 002 復現 Spring4Shell: Spring Core RCE JDK 9+ CVE-2022-22965
CVE-2022-22965: Spring Framework RCE via Data Binding on JDK 9+
Research Threat intelligence Cloud threats 12 min read
SpringShell RCE vulnerability: Guidance for protecting against and detecting CVE-2022-22965

Spring4Shell (CVE-2022-22965) 是一個發現於 2022 年 3 月的重大安全漏洞,影響到 Java 開發框架 Spring Core 的某些版本。這個漏洞允許攻擊者在特定條件下對運行受影響版本 Spring Framework 的 Web 應用程序執行遠程代碼 (Remote Code Execution, RCE) 攻擊。

具體技術細節:

受影響的環境:

  • Java Development Kit (JDK) 9.0 或更新版本。

  • Spring Framework 版本 5.3.0 至 5.3.17 及 5.2.0 至 5.2.19。

  • 使用 Apache Tomcat 作為 Servlet 容器,特別是在傳統的 Java Web 應用程序部署(即 WAR 檔案形式)。

  • Spring Framework 中有 spring-webmvc 或 spring-webflux 依賴項。

漏洞的成因:

Spring4Shell 漏洞涉及 Java 中的類加載器機制,當特定的 HTTP 請求被 Spring 框架處理時,攻擊者可以利用 Spring 的參數綁定功能操縱 Tomcat 中的 AccessLogValve 對象屬性,從而在 Tomcat 的 Web 應用程序根目錄中創建惡意的 JSP Web shell。

漏洞的利用:

攻擊者可以通過發送經過特殊設計的 HTTP 請求來利用這一漏洞,修改 Tomcat 的日誌配置,並將其配置為將命令執行代碼寫入 Web 應用程序的目錄中。這樣,攻擊者可以遠程控制受影響的系統。

防護和緩解措施:

升級:

建議將 Spring Framework 升級至版本 5.3.18 或 5.2.20,以避免受到此漏洞的影響。

修補措施:

如果無法立即升級,可以通過以下方法進行緩解:

  • 使用 @InitBinder 註解並添加黑名單以防止攻擊。

  • 全局性地設置禁止 class.* 和 Class.* 等類相關的字段,以避免被利用。

檢測和防護工具:

  • Microsoft 365 Defender 提供了對這一漏洞的檢測和報告功能,包括高級狩獵查詢和端點檢測與回應 (EDR)。

  • Azure Web Application Firewall (WAF) 和 Azure Firewall Premium 增強了對 Spring4Shell 漏洞的防護規則,進一步防範利用此漏洞的攻擊。
    這一漏洞因其嚴重性和普遍性引起了廣泛關注,因此建議所有使用受影響框架的開發者和運維人員儘快採取相應的升級和防護措施。