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

中等 | 2018年6月14日 | CVE-2018-11040

描述

Spring Framework 的 5.0.x 系列(5.0.7 之前的版本)、4.3.x 系列(4.3.18 之前的版本)以及更早的不再受支持的版本,允许 Web 应用程序通过 JSONP(JSON with Padding)实现跨域请求。具体来说,AbstractJsonpResponseBodyAdvice 用于 REST 控制器,而 MappingJackson2JsonView 用于浏览器请求。在 Spring Framework 和 Spring Boot 中,这两者都不是默认启用的。然而,当应用程序中配置了 MappingJackson2JsonView 时,通过 "jsonp" 和 "callback" 这两个 JSONP 参数,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 社区所有即将举行的活动。

查看所有