CVE-2018-11040: MappingJackson2JsonView 中默认启用 JSONP

MEDIUM | 2018 年 6 月 14 日 | CVE-2018-11040

描述

Spring Framework 的 5.0.x 版本(低于 5.0.7)、4.3.x 版本(低于 4.3.18)以及较旧的不受支持版本,允许 Web 应用程序通过 AbstractJsonpResponseBodyAdvice(对于 REST 控制器)和 MappingJackson2JsonView(对于浏览器请求)启用通过 JSONP(带有填充的 JSON)的跨域请求。两者在 Spring Framework 和 Spring Boot 中都不是默认启用的。 但是,当在应用程序中配置 MappingJackson2JsonView 时,JSONP 支持会自动通过 "jsonp" 和 "callback" JSONP 参数使用,从而启用跨域请求。

允许来自不受信任来源的跨域请求可能会将用户信息暴露给第三方浏览器脚本。

此漏洞适用于以下应用程序:

  • 显式配置 MappingJackson2JsonView。
  • 并且未将 MappingJackson2JsonView 的 jsonpParameterNames 属性设置为空集。
  • 并通过可以使用 JSONP 呈现内容的端点公开敏感用户信息。

受影响的 Spring 产品和版本

  • Spring Framework 5.0 到 5.0.6
  • Spring Framework 4.1 到 4.3.17

缓解措施

受影响版本的用户应采取以下缓解措施:

  • 5.0.x 用户应升级到 5.0.7。
  • 4.3.x 用户应升级到 4.3.18。
  • 旧版本应升级到受支持的分支,或者将 MappingJacksonJsonView 的 jsonpParameterNames 属性设置为空集。

需要 JSONP 支持的应用程序需要在升级后显式配置 MappingJacksonJsonView 的 jsonpParameterNames 属性。 建议应用程序切换到使用 CORS 而不是 JSONP 来启用跨域请求。 Spring Framework 中的 JSONP 支持已从 5.0.7 和 4.3.18 开始弃用,并将在 5.1 中删除。

鸣谢

此问题由 Meyyalagan Chandrasekaran 发现并报告。

参考文献

历史

2018-06-14:发布初始漏洞报告。

领先一步

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

了解更多

获得支持

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

了解更多

即将举行的活动

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

查看全部