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 社区所有即将举行的活动。

查看所有