近日,最受歡迎的開源輕量級 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 高危程度相比。