Spring 框架存在高危 RCE 零日漏洞?核心開發者澄清

2022-03-31 09:00:06

近日,最受歡迎的開源輕量級 Java 框架 Spring 被曝存在高危的 RCE(遠端控制裝置) 零日漏洞北京大學計算中心(相關公告在本文釋出時已刪除)、外媒 、 等站點對該漏洞進行了報道。

據網上瘋傳的介紹,該 RCE 漏洞源於 Spring 框架核心的 SerializationUtils#dserialize 方法,該方法基於 Java 的序列化與反序列機制,可導致遠端程式碼執行 (RCE),使用 JDK9 及以上版本皆有可能受到影響。

正在緊急修復?

從 Spring 專案的 Git 提交記錄來看,在漏洞訊息瘋傳的同時, Spring 開發者似乎在緊急處理漏洞相關的程式碼,比如 3 月 29日的新提交:。

在這個敏感的時間點,該提交引了一些緊張情緒,很多使用者在該提交下面留言,詢問該提交的程式碼改動是否與網傳的 0day RCE 漏洞相關?而 Spring 核心開發者之一 對此作出澄清:

棄用 SerializationUtils#deserialize 跟目前所有的漏洞都沒有關係。

此提交的目的是通知使用過 SerializationUtils#deserialize 的使用者:從不受信任的來源反序列化物件是危險的。

Spring 核心框架不會使用 SerializationUtils 反序列化來自不受信任來源的物件。

事實上,早在 2 月 19 日 Spring 框架的倉庫就出現過對該 SerializationUtils 方法的討論,開發者   就指出:基於 Java 的序列化機制,SerializationUtils#dserialize 可能導致 RCE 遠端程式碼執行漏洞,因此他提出了棄用 SerializationUtils#dserialize 的 PR 

由此看來,前面的提交是 ledoyen 針對該 PR 的一次程式碼合併,棄用 SerializationUtils#dserialize也是計劃之內的事情。有人詢問在該 PR 下詢問「 SerializationUtils#dserialize 是否應該作為漏洞報道」時, ledoyen 也進行解釋:

SerializationUtils#dserialize本身不是漏洞,使用此工具處理使用者輸入資料可能會導致 CVE,但該方法在內部作為快取結果攔截器( CacheResultInterceptor) 使用的話,則不會導致任何漏洞。

目前, SerializationUtils#dserialize在 Spring Framework 6.0 中已棄用,而對於 5.3.x 版本,則是向 Javadoc 中新增針對 SerializationUtils 工具類的警告,以提高使用者的警覺意識。

 

如果確實存在,那麼這個 Spring 框架 RCE 漏洞的影響將遠超此前的 Log4j 或 Heartbleed ,但小編翻了一整天,也沒有看到誰能真正復現此漏洞(基本是開局一張馬賽克圖,漏洞細節全靠編)。

GitHub 上倒是有很多命名為 Spring core RCE 的新倉庫,但基本都是「懂得都懂」的謎語描述。據鄭州網安協會報道,甚至還有人趁亂髮布釣魚 exe 檔案...

截至發稿時間,Spring 團隊沒有對該漏洞發表任何官方公告:的最新漏洞公告是 和 ,但這兩個漏洞的嚴重程度都是中等,無法與網傳 Spring 核心框架的 RCE 高危程度相比。

展開閱讀全文