基於JDK9的Spring核心爆RCE 0-day漏洞 - Cyber
今天,研究人員發現了一個可能破壞網際網路的最嚴重漏洞之一,這個漏洞目前沒有 CVE id(當時是待確認,3月31日已經確認 CVE-2022-22965),但我們可以將其 稱為 Spring4Shell。
該漏洞存在於JDK版本大於等於9.0的Spring核心中。
這個漏洞可能類似2021年底Log4j RCE 0-day 漏洞:Log4Shell
漏洞詳情和調查
(1).檢查JDK版本號
在系統的執行伺服器上,執行“ java -version ”命令檢視執行的JDK版本。如果版本號小於等於8,則不受漏洞影響。
(2) 檢查 Spring 框架的使用情況
1.如果系統專案以war包的形式部署,請按照以下步驟進行判斷。
- 解壓war包。將war檔案的字尾改為.zip,並解壓壓縮檔案
- 在解壓目錄中搜尋spring-beans-*.jar格式的jar檔案(例如,spring-beans-5.3.16.jar)。如果它存在,說明該業務系統是使用spring框架開發的。
- 如果spring-beans-*.jar檔案不存在,在解壓目錄下搜尋CachedIntrospectionResuLts.class檔案是否存在。如果它存在,說明該業務系統是使用Spring框架開發的。
2. 如果系統專案以jar包的形式直接獨立執行,則按照以下步驟判斷。
- 解壓縮jar包。將jar檔案的字尾改為.zip,並解壓壓縮檔案。
- 在解壓目錄中搜尋spring-beans-*.jar格式的jar檔案(例如,spring-beans-5.3.16.jar)。如果它存在,說明該業務系統是使用spring框架開發的。
- 如果spring-beans-*.jar檔案不存在,在解壓目錄下搜尋CachedIntrospectionResuLts.class檔案是否存在。如果它存在,說明該業務系統是使用spring框架開發的。
(3) 全面調查
在完成以上兩步排查後,同時滿足以下兩個條件,就可以確定是受此漏洞影響。
- JDK版本號為9及以上。
- 使用spring框架或衍生框架。
漏洞修復指南
目前,官方還沒有針對的補丁。但建議使用以下兩種臨時解決方案進行防護,並及時關注官方補丁的釋出,根據官方補丁修復漏洞。
從 Git Repository來看,Spring 開發者似乎正在著手修復遠端程式碼執行漏洞,但我們必須等待官方確認。
更新:
用於測試是否易受Spring4Shell攻擊的工具。
另外一個測試工具:使用嵌入式 Tomcat 的 Spring 應用程式似乎並不容易受到攻擊,但構建為 .war 檔案並部署到獨立 Tomcat 的應用程式可能容易受到攻擊。在 JDK 11.0.14、Spring Boot 2.6.5 和 Tomcat 9.0.60 上測試。
其他細節:
- https://www.cyberkendra.com/2022/03/springshell-rce-0-day-vulnerability.html
- https://bugalert.org/content/notices/2022-03-29-spring.html
- https://websecured.io/blog/624411cf775ad17d72274d16/spring4shell-poc
- https://www.springcloud.io/post/2022-03/spring-0day-vulnerability
- https://www.lunasec.io/docs/blog/spring-rce-vulnerabilities/
更新:
Spring Framework RCE官方公告
3月31日已經確認 CVE-2022-22965 嚴重性程度:危急Critical
漏洞暴露的先決條件:
- JDK 9 或更高版本
- Apache Tomcat 作為 Servlet 容器
- 打包為 WAR
- spring-webmvc 或 spring-webflux 依賴項
受影響Spring版本:
- Spring Framework
- 5.3.0 to 5.3.17
- 5.2.0 to 5.2.19
- 舊的、不受支援的版本也會受到影響
為什麼隻影響WAR而不影響Jar釋出包
這與WAR包中的類載入器許可權開放有,,因為嵌入式 servlet 使用了更嚴格的類載入器。
這一切都是因為幾年前基於另一個 CVE 的工作,它變成了一個更廣泛開放的類載入器。
更準確地說,多年前的CVE修復阻止了通過類物件訪問類載入器。Java 9通過模組又暴露了類載入器,模組可以從類中訪問,因此提供了一種繞過舊的CVE修復的方法。
結合這一點,獨立的Tomcat的網路應用程式類載入器有寫到webapps目錄的許可權,你就得到了當前的POCs。
嵌入式Tomcat的類載入器沒有這樣的許可權,因此不能寫出用於在這些POCs中觸發RCE的jsp檔案。
然而,如果這個問題的根本原因是Spring對錶單引數繫結的處理,可能與war/jar檔案的格式,或Tomcat的存在,或Java版本有什麼關係。
就我們所知,可能還有其他尚未公佈的漏洞途徑。但它們不一定像RCE那樣嚴重。
因此,雖然公佈的概念證明只適用於基於WAR包的部署,但完全有可能發現另一種不存在這種限制的攻擊,但是使用了相同的機制。
相關文章
- Spring Cloud Function現RCE 0-day漏洞SpringCloudFunction
- Java的Fastjson庫爆高嚴重性RCE漏洞JavaASTJSON
- 在log4j日誌包中發現RCE 0-day漏洞 - lunasec
- CVE-2021-44521:Apache Cassandra爆發RCE漏洞Apache
- 基於 GDI 物件的 Windows 核心漏洞利用物件Windows
- spring boot (whitelabel error page SpEL RCE) 漏洞復現Spring BootError
- RCE-基於Pikachu的學習
- RCE漏洞常用的Payload總結
- Sunlogin RCE漏洞分析和使用
- spark未授權RCE漏洞Spark
- 關於Spring Cloud的核心特性SpringCloud
- CVE-2020-14871:Oracle Solaris 0-Day漏洞利用在野Oracle
- Spring框架再爆漏洞:資料繫結規則漏洞CVE-2022-22968Spring框架
- RCE(遠端程式碼執行漏洞)原理及漏洞利用
- 思科IP電話存嚴重RCE漏洞!
- 技術分享 | Fastjson-RCE漏洞復現ASTJSON
- 什麼是RCE漏洞?會造成哪些危害?
- Spring基礎 - Spring核心之控制反轉(IOC)Spring
- 基於Spring Batch的Spring Boot的教程 - BaeldungBATSpring Boot
- [CVE-2024-4577] php CGI RCE漏洞python POCPHPPython
- CISA警告駭客利用ZK Java框架RCE漏洞Java框架
- 基於Maven的Spring整合CXFMavenSpring
- Spring基於XML方式的使用SpringXML
- Spring Boot RCE到記憶體馬探索Spring Boot記憶體
- spring boot基於Java的容器配置Spring BootJava
- Spring基於註解的IoC配置Spring
- 基於Spring Cloud的微服務落地SpringCloud微服務
- Spring基於註解的aop配置Spring
- Spring7——開發基於註解形式的springSpring
- 11-RCE、編輯器漏洞、旁註、hydra練習
- PHP Everywhere 三個 RCE 漏洞威脅大量 WordPress 網站PHP網站
- Facebook 被曝僱用公司抹黑 TikTok;Spring 承認 RCE 大漏洞;Chrome 100 釋出 | 思否週刊SpringChrome
- JDK9新特性詳解JDK
- Spring之路(38)–基於PlatformTransactionMSpringPlatform
- Spring Cloud的核心特性SpringCloud
- Spring中基於XML方式的AOP操作SpringXML
- Spring Aop基於註解的實現Spring
- Spring AOP基於xml的方式實現SpringXML