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

领先一步

VMware 提供培训和认证,以加速您的进步。

了解更多

获得支持

Tanzu Spring 在一个简单的订阅中提供对 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区中所有即将举行的活动。

查看全部