Spring安全公告

CVE-2017-4995:Jackson配置允许使用未知“反序列化gadget”执行代码

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

描述

当配置为启用默认类型时,Jackson包含一个反序列化漏洞,可能导致任意代码执行。Jackson通过将已知的“反序列化gadget”列入黑名单来修复此漏洞。

Spring Security使用全局默认类型配置Jackson,这意味着如果满足以下所有条件,则可以通过之前的漏洞执行任意代码

  • Spring Security的Jackson支持通过调用SecurityJackson2Modules.getModules(ClassLoader)或SecurityJackson2Modules.enableDefaultTyping(ObjectMapper)来实现
  • Jackson用于反序列化不受信任的数据。Spring Security不使用Jackson进行反序列化,因此这是用户的显式选择。
  • 类路径中存在一个未知(Jackson尚未将其列入黑名单)的“反序列化gadget”,允许执行代码

Jackson提供了一种黑名单方法来防御此类攻击,但是当Spring Security启用默认类型时,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社区中所有即将举行的活动。

查看全部