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

危急 | 2019年2月21日 | CVE-2019-3778

描述

Spring Security OAuth 的 2.3 版本(2.3.5 之前)、2.2 版本(2.2.4 之前)、2.1 版本(2.1.4 之前)和 2.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 社区所有即将举行的活动。

查看所有