CVE-2017-4995:Jackson 配置允許使用未知的“序列化 gadget”執行程式碼

| 2017 年 6 月 8 日 | CVE-2017-4995

描述

當配置為啟用預設型別時,Jackson 存在一個反序列化漏洞,可能導致任意程式碼執行。Jackson 透過將已知的“反序列化 gadget”列入黑名單來修復此漏洞。

Spring Security 使用全域性預設型別配置 Jackson,這意味著透過先前的漏洞,如果以下所有條件都成立,則可能執行任意程式碼:

  • 透過呼叫 SecurityJackson2Modules.getModules(ClassLoader) 或 SecurityJackson2Modules.enableDefaultTyping(ObjectMapper) 來利用 Spring Security 的 Jackson 支援。
  • Jackson 用於反序列化不受信任的資料。Spring Security 不使用 Jackson 進行反序列化,因此這是使用者的明確選擇。
  • classpath 中存在一個未知的(Jackson 尚未列入黑名單的)允許執行程式碼的“反序列化 gadget”。

Jackson 提供了一種黑名單方法來防範此類攻擊,但當 Spring Security 啟用預設型別時,它應該主動阻止未知的“反序列化 gadget”。

受影響的 Spring 產品和版本

  • Spring Security 4.2.0.RELEASE - 4.2.2.RELEASE
  • Spring Security 5.0.0.M1

緩解措施

受影響版本的使用者應採取以下緩解措施

  • 已修復此問題的釋出版本包括
    • Spring Security:4.2.3.RELEASE+
    • Spring Security:5.0.0.M2+
  • 此修復程式確保預設情況下僅反序列化顯式對映的類。使用顯式對映類的效果是建立一個白名單,適用於所有支援的 Jackson 版本。如果使用者明確選擇全域性預設型別,則將恢復先前可能存在風險的配置。

參考資料

歷史

2017-06-08:首次釋出漏洞報告

領先一步

VMware 提供培訓和認證,助您加速進步。

瞭解更多

獲得支援

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位制檔案,只需一份簡單的訂閱。

瞭解更多

即將舉行的活動

檢視 Spring 社群所有即將舉行的活動。

檢視所有