CVE-2017-4995:Jackson配置允許使用未知的“序列化小工具”執行程式碼
低 | 2017 年 6 月 8 日 | CVE-2017-4995
描述
當配置為啟用預設型別時,Jackson 包含一個反序列化漏洞,可能導致任意程式碼執行。 Jackson 透過將已知的“反序列化小工具”列入黑名單來修復此漏洞。
Spring Security 配置 Jackson 並啟用了全域性預設型別,這意味著透過之前的漏洞,如果以下所有條件都成立,則可以執行任意程式碼
- Spring Security 的 Jackson 支援正透過呼叫 SecurityJackson2Modules.getModules(ClassLoader) 或 SecurityJackson2Modules.enableDefaultTyping(ObjectMapper) 來利用
- Jackson 用於反序列化不受信任的資料。 Spring Security 不使用 Jackson 執行反序列化,因此這是使用者的明確選擇。
- 存在一個未知的(Jackson 尚未將其列入黑名單)“反序列化小工具”,允許執行類路徑上的程式碼
Jackson 提供了一種黑名單方法來防止此類攻擊,但當 Spring Security 啟用預設型別時,Spring Security 應該主動阻止未知的“反序列化小工具”。
受影響的 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:釋出初始漏洞報告