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:发布初始漏洞报告