CVE-2019-3778: spring-security-oauth2 中的开放重定向漏洞

严重 | 2019年2月21日 | CVE-2019-3778

描述

Spring Security OAuth 的版本 2.3 早于 2.3.52.2 早于 2.2.42.1 早于 2.1.42.0 早于 2.0.17 以及更早的不受支持版本,可能容易受到开放重定向攻击,从而导致授权码泄露。恶意用户或攻击者可以使用授权码授权类型构造一个指向授权端点的请求,并通过 "redirect_uri" 参数指定一个被篡改的重定向 URI。这可能导致授权服务器将资源所有者用户代理重定向到攻击者控制下的 URI,并泄露授权码。

此漏洞会影响满足以下所有要求的应用程序

  • 充当授权服务器角色(例如 @EnableAuthorizationServer
  • AuthorizationEndpoint 中使用 DefaultRedirectResolver

此漏洞影响以下应用程序

  • 充当授权服务器角色但使用 DefaultRedirectResolver 以外的其他 RedirectResolver 实现
  • 仅充当资源服务器角色(例如 @EnableResourceServer
  • 仅充当客户端角色(例如 @EnableOAuthClient

受影响的 Spring 产品和版本

  • Spring Security OAuth 2.32.3.4
  • Spring Security OAuth 2.22.2.3
  • Spring Security OAuth 2.12.1.3
  • Spring Security OAuth 2.02.0.16
  • 更早的不受支持版本也受到影响

缓解措施

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

  • 2.3.x 用户应升级到 2.3.5
  • 2.2.x 用户应升级到 2.2.4
  • 2.1.x 用户应升级到 2.1.4
  • 2.0.x 用户应升级到 2.0.17
  • 更早版本应升级到受支持的分支

无需其他缓解步骤。

对于 Spring Boot 1.5.xSpring IO Platform Cairo 的用户,强烈建议将 spring-security-oauth 版本覆盖为包含此 CVE 补丁的最新版本。要覆盖版本,您需要声明/设置属性 spring-security-oauth.version

以下是针对 Spring Boot 1.5.x 用户的说明。

要使用 Maven 覆盖属性,请在 pom 的 部分中声明该属性


2.0.17.RELEASE

要使用 Gradle 覆盖属性,请在 build.gradle 脚本中配置该值

ext['spring-security-oauth.version'] = '2.0.17.RELEASE'

或在 gradle.properties

spring-security-oauth.version=2.0.17.RELEASE

注意:同样的说明适用于 Spring IO Platform Cairo 用户。但是,需要指定的版本是 2.2.4.RELEASE

鸣谢

此问题由 dotloop 的 Dirk Koehler (github.com/phrinx) 发现并负责任地报告。特别感谢 NTT、NTT Comware、NTT DATA Corporation 的 Macchinetta 框架开发团队,感谢他们协助验证解决方案并识别出利用此漏洞的其他方式。

参考

历史

2019-02-21: 初步漏洞报告发布。

领先一步

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

了解更多

获取支持

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

了解更多

近期活动

查看 Spring 社区的所有近期活动。

查看全部